Domain (73) 썸네일형 리스트형 [디자인패턴] 퍼사드 패턴(Facade Pattern) 퍼사드 패턴(Facade Pattern) 퍼사드 패턴은 가장 객체지향의 기본적인 패턴이다. 복잡한 코드를 뒤에 숨기고 간략화 된 인터페이스를 제공하는 패턴이다. 여러 클래스를 퍼서드 클래스 안에서 클래스들을 초기화해주고 특정 작업을 수행하면 된다. 예제 예를 들어, 사용자의 위치 정보를 얻어 해당 위치에 필요한 정보를 서버에 요청하여 받아온 뒤, 해당 값을 Json으로 바꾸는 과정이 존재한다. public class Example{ public static void main(String[] args){ double[] location = new GeoLocation().getLocation(); InternetConnection conn = new InternetConnection(); conn.conn.. [디자인패턴] 템플릿 메소드 패턴(Template Method Pattern) 템플릿 메소드 패턴(Template Method Pattern) 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체 일을 수행하는 구조는 변동이 없고, 특정 단계에서 수행하는 내용을 바꾸는 패턴이다. 즉, 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계를 다시 정의할 수 있게 해준다. 위 구조를 보면 부모 클래스인 AlgorithmBase에서 전반적인 과정을 수행하는 TemplateMethod()가 존재하고, 그 외에 세부 메서드인 Step1(), Step2(), Step3()가 존재한다. TemplateMethod()에서는 해당 세부 메서드를 수행하게 된다. 그리고 자식 클래스인 ConcreateAlgorithmA,B는 이를 상속 받는다. 피자 만들기 예시 한 마을에서 피자 달인인 밥 아저씨가.. [디자인패턴] 상태 패턴(State Pattern) 상태 패턴(State Pattern) 상태 패턴은 특정 상태마다 다르게 할 일을 정의하고 나아가 상태 자체를 객체화하는 디자인 패턴이다. 가장 쉬운 예시는 TV이다. TV는 ON/OFF 버튼으로 ON 상태, OFF 상태로 변환한다. 예시 컴퓨터의 전원 버튼을 누르면 전원이 켜지고, 켜진 상태에서 다시 전원 버튼을 누르면 컴퓨터를 종료할 수 있다. public class Computer { public static String ON = "on"; public static String OFF = "off"; private String state = ""; public Computer(){ setState(Laptop.OFF); } public void setState(String state){ this.st.. [디자인패턴] 어댑터 패턴(Adapter Pattern) 어댑터 패턴(Adapter Pattern) 어댑터라는 말은 흔히 아는 듯 잘 맞지 않는 구조에 대해 호환이 되게끔 하는 것을 의미한다. 객체지향 관점에서는 클래스의 인터페이스를 사용자가 기대하는 인터페이스로 변환하는 패턴이다. 이를 통해 최대한 기존 코드를 유지할 수 있다는 장점이 있다. 단점으로는 사용하기 위해 클래스가 많아지면서 복잡할 수 있고 상속을 사용하기에 유연성이 떨어질 수 있다. UML ITarget: 타겟으로 하는 인터페이스 (기존 코드) Client: ITarget 인터페이스를 요구하는 요소를 지닌 클래스 Adapter: Adaptee 클래스를 Target 인터페이스에 맞춰주는 클래스 Adaptee: ITarget 인터페이스의 요소로 집어넣고 싶은 클래스 실제 예시 전 포스팅의 전략 패턴.. [디자인패턴] 전략 패턴(Strategy Pattern) 전략 패턴(Strategy Pattern) 각 객체들이 하게 될 행위에 대해 전략 클래스를 생성하고, 유사한 행위를 캡슐화하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고, 전략(객체)을 바꿔주기만 함으로써 유연하게 확장하는 방법을 의미한다. 각 행위를 각각의 객체로 만들고, 행위의 변경이 필요한 경우 전략을 바꾸는 방식 UML Strategy: 외부에서 전략을 교체하는 인터페이스. 추상 메서드를 활용한다. ConcreteStrategyA/ConcreteStrategyB : 전략 객체 Context: Strategy를 실제 주입받아 사용하는 객체전략 패턴(Strategy Pattern) 실 사용 예시 위의 구글 검색의 경우 전체/이미지/뉴스/동영상/지도 탭을.. [디자인패턴] 팩토리 패턴(Factory Pattern) 팩토리 패턴(Factory Pattern) 팩토리 패턴은 인스턴스를 만드는 과정을 서브클래스로 위임하는 것이다. 즉, new 키워드를 사용하여 메모리를 할당하는 부분을 서브 클래스에서 작성하게된다. 이를 통해 객체 생성을 캡슐화하고 구상 클래스(concrete class)에 대한 의존성이 줄어든다는 이점이 있다. 구상(구체적인 형상) 클래스는 실제 new를 통해 메모리화 가능한 클래스, 단독으로 메모리에 올라갈 수 없는 추상 클래스와 대립되는 개념 팩토리 패턴은 팩토리 메서드 패턴과 추상 팩토리 패턴으로 나뉜다. 팩토리 메서드 패턴 조건에 따른 객체를 생성하기 위한 과정을 팩토리 클래스로 위임하여, 팩토리 클래스에서 객체를 생성해서 해당 객체를 반환한다. 예제. 좋지 않은 코드 예시 우선 Type 추상 .. [디자인패턴] 싱글톤 (Singleton) 싱글톤 (Singleton) 싱글톤이란 프로세스 내에서 한 클래스에서 여러개의 객체 생성을 방지하는 생성 패턴이다. 즉, 하나의 프로세스에는 하나의 객체만 생성되게하는 패턴이다. 실제 사용 가능한 예시 모바일 애플리케이션의 경우 최근 다크모드를 지원하는 경우가 많다. 이런 다크모드의 경우 여러 액티비티(스크린)을 전환하면서도 같은 상태로 유지되어야 한다. 이럴 경우 다크모드 관련된 클래스는 메모리에 항상 적재되어 있으며 모든 클래스가 이를 공유해야 한다. 이 상황에서 적합한게 바로 싱글톤이다. 자바 코드 public final class Singleton{ private static Singleton instance = null; private Singleton(){} public getInstance(.. [데이터베이스] 정규화 정규화 관계형 데이터베이스의 설계에서 중복을 최소화하는 방식으로 일관성 훼손을 방지하여 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 설계가 잘못된 테이블의 예시 위 테이블의 문제점은 아래와 같다. 하나의 테이블에 여러 주제가 표현 -> 학생, 교수, 교과목 여러 주제의 표현으로 인해 데이터 중복이 발생했다. 수정 이상(갱신/삽입/삭제이상) 현상이 발생할 수 있다. 수정 이상 수정 이상이란 데이터의 갱신/삽입/삭제 과정에서 원치 않는 결과가 초래되는 현상을 의미한다. 갱신 이상은 데이터의 값을 변경하는 작업에 의해 생기는 이상 현상이다. 위처럼 홍병근 학생의 주소 변경 시 일부 행들만 변경되어 데이터.. 이전 1 2 3 4 5 ··· 10 다음