본문 바로가기
반응형

전체 글65

[Design Pattern] 팩토리 메소드 패턴 (Factory Method Pattern) 팩토리 메소드 패턴(Factory Method Pattern)에서는 객체를 생성할 때 필요한 인터페이스를 만듭니다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정합니다. 팩토리 메소드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에게 맡기게 됩니다. (해드퍼스트) 객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스를 생성할지에 대한 처리는 서브클래스가 결정하는 디자인 패턴 (GoF) 다른 팩토리를 쓸 떄와 마찬가지로 팩토리 메소드 패턴으로 구상 형식 인스턴스를 만드는 작업을 캡슐화할 수 있다. 팩토리 메소드 패턴에서는 어떤 클래스의 인스턴스를 만들지를 서브클래스에서 결정한다. 사용하는 서브클래스에 따라 생산되는 객체 인스턴스가 결정된다. 제품을 생산하는 부분과 사용하는 부.. 2022. 7. 3.
[Design Pattern] 퍼사드 패턴 (Facade Pattern) 퍼사드 패턴(Facade Pattern은 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어 줍니다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더편리하게 사용할 수 잇습니다. 퍼사드는 인터페이스를 단순하게 만들고 클라이언트와 구성요소로 이루어진 서브시스템을 분리하는 역할도 한다. 퍼사드와 어댑터는 모두 여러 개의 클래스를 감쌀 수 있습니다. 하지만 퍼사드는 인터페이스를 단순하게 만드는 용도로 쓰이는 반면, 어댑터는 인터페이시를 다른 인터페이스로 변환하는 용도로 쓰입니다. 최소 지식 원칙 (Principle of Least Knowledge) 에 따라는 객체 사이의 상호작용은 될 수 있으면 아주 가까운 친구 사이에서만 허용하는 편이 좋다. 이 원칙을 잘 따르면 여러 클래스가 복잡하게 얽혀 .. 2022. 7. 3.
[Design Pattern] 적응자 패턴 (Adapter Pattern) 어댑터 패턴(Adapter Pattern)은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다. 어댑터패턴을 사용하면 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. 인터페이스를 변환해주는 어댑터를 만들면 되기 때문이다. 어댑터 패턴은 여러 객체지향 원칙을 반영하고 있다. 어댑티(Adaptee)를 새로 바뀐 인터페이스로 감쌀 때는 객체 구성(composition)을 사용한다. 이런 접근법은 어댑티의 모든 서브클래스에 어댑터를 쓸 수 있다는 장점을 가지고 있다. 이 패턴은 클라이언트를 특정 구현이 아닌 인터페이스에 연결한다. 서로 다른 클래스로 변환시키는 여러 어댑터를 사.. 2022. 7. 3.
[Design Pattern] 커맨드 패턴 (Command Pattern) 커맨드 패턴을 (Command Pattern)을 사용하면 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 다라 매개변수화할 수 있습니다. 이러면 요청을 큐에 저장하거나 로그로 기록하거나 작업 취소 기능을 사용할 수 있습니다. 커맨드 객체 (command object)는 일련의 행동을 특정 리시버와 연결하므로써 어떤 작업을 요청하는 쪽과 그 작업을 처리하는 쪽을 분리할 수 있다. 이 객체가 행동이 들어 있는 리시버를 캡슐화 한다. 커맨드는 인보커를 매개변수화 할 수있다. 실행 중에 동적으로 매개변수화를 설정할 수도 있다. 커맨드 패턴으로 작업 취소 기능도 구현이 된다. 매크로 커맨드는 커먼드를 확장해서 여러 개의 커맨드를 한 번에 호출할 수 있게 해주는 가장 간편한 방법이다. 커맨드 패턴을 활.. 2022. 7. 3.
[Design Pattern] 템플릿 메서드 패턴 (Template Method Pattern) **템플릿 메소드 패턴(Template Method Pattern)**은 알고리즘의 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있습니다. 간단하게 말하면 템플릿 메소드 패턴은 알고리즘의 템플릿을 만든다. 템플릿이란 그냥 메소드이다. 일련의 단계로 알고리즘을 정의한 메소드이다. 여러 단계 가운데 하나 이상의 단계가 추상 메소드로 정의되며, 그 추상 메소드는 서브클래스에서 구현된다. 이러면 서브클래스가 일부분의 구현을 처리하게하면서도 알고리즘의 구조는 바꾸지 않아도 된다. package pattern.template.starbucks; public abstract.. 2022. 7. 3.
[Design Pattern] 싱글톤 패턴 (Singleton Pattern) **싱클톤 패턴(Singleton Pattern)**은 크래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 싱글턴 패턴을 실제로 적용할 때는 클래스에서 하나뿐인 인스턴스를 관리핟로고 만들면 된다. 그리고 다른 어떤 클래스에서도 자신의 인스턴스를 추가로 만들지 못하게 해야한다. 인스턴스가 필요하다면 반드시 클래스 자신을 거치도록 한다. 싱글톤 패턴의 장점 메모리 낭비 방지 가능. 인스턴스를 활용함으로 써 속도 감정 다른 클래스간의 데이터 공유가 가능 싱클톤 패턴의 문제점 동시성 문제의 발생 (해결 가능) 테스트가 어려움. 싱글톤 인스턴스는 자원을 공유하기 떄문에 매번 인스턴스 상태를 초기화 해야함 싱글톤이 가지고 있는 역할이 많을 경우 결합도가 높아져 객체 지향 설계와 멀어짐. (OC.. 2022. 7. 3.
반응형