Domain/디자인패턴 (12) 썸네일형 리스트형 [디자인패턴] 어댑터 패턴(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 다음