본문 바로가기
반응형

패턴10

[Design Pattern] 복합체 패턴, 컴포지트 패턴 (Composite Pattern) 컴포지트 패턴(Composite Pattern) 으로 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현합니다. 컴포지트 패턴을 사용하면 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있습니다. 이 패턴을 사용하면 중첩되어 있는 그룹과 항목을 똑같은 구조 내에서 처리 할 수 있습니다. 그룹과 항목을 같은 구조에 넣어서 부분 - 전체 계층 구조(part-whole hierarchy)를 생성할 수 있습니다. 여기서 부분 - 전체 계층 구조란, 부분들이 계층을 이루고 있지만 모든 부분을 묶어서 전체로 다룰 수 있는 구조를 말합니다. 컴포지트 패턴을 사용하면 객체의 구성과 개별 객체를 노드로 가지는 트리 형태의 객체 구조를 만들 수 있습니다. 이런 복합 구조(composite structur.. 2022. 7. 9.
[Design Pattern] 반복자 패턴 (Iterator Pattern) 반복자 패턴(Iterator Pattern)은 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공한다. 이 패턴을 사용하면 집합체 내에서 어떤 식으로 일이 처리되는지 전혀 모르는 상태에서 그안에 들어있는 모든 항목을 대상으로 반복 작업을 수행할 수 있습니다. 디자인에 반복자를 적용했을 때 얻는 효과도 중요합니다. 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 종류에 관계없이 모든 집합체에 사용할 수 있는 다형적인 코드를 만들 수 있기 때문이다. 반복자 패턴을 사용하면 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체가 맡게 된다는 사실도 중요하다. 이러면 집합체의 인터페이스와 구현이 간단해지고 집합체는 반복 작업에서 손을 떼고 .. 2022. 7. 9.
[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.
반응형