public:computer:design_patterns

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
public:computer:design_patterns [2021/11/01 14:34] – [MVC] alexpublic:computer:design_patterns [2022/04/15 16:19] (current) – [SEE ALSO] alex
Line 1: Line 1:
 ====== Design Patterns ====== ====== Design Patterns ======
  
-===== Factory Method =====+===== Factory Method (Creational) =====
 팩토리 메소드 패턴 - 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스 인스턴스를 만들지는 서브클래스에서 결정하게 만듭니다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것이죠. 팩토리 메소드 패턴 - 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스 인스턴스를 만들지는 서브클래스에서 결정하게 만듭니다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것이죠.
  
-===== Abstract Factory =====+===== Abstract Factory (Creational) =====
 추상 팩토리 패턴 - 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있습니다. 추상 팩토리 패턴 - 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있습니다.
  
-===== Adapter =====+===== Adapter (Structural) =====
 어댑터 패턴(Adapter Pattern) - 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다. 어댑터 패턴(Adapter Pattern) - 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다.
  
-===== Command =====+===== Command (Behavioral) =====
 커맨드 패턴 - 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수도 있습니다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원 가능합니다. 커맨드 패턴 - 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수도 있습니다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원 가능합니다.
  
-===== Composite =====+===== Composite (Structural) =====
 컴포지트 패턴을 이용하면 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있습니다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있습니다. 컴포지트 패턴을 이용하면 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있습니다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있습니다.
  
-===== Decorator =====+===== Decorator (Structural)  =====
 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.
  
-===== Facade =====+===== Facade (Structural) =====
 퍼사드 패턴 - 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다. 퍼사드 패턴 - 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다.
  
-===== Iterator =====+===== Iterator (Behavioral) =====
 이터레이터 패턴은 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 줍니다. 이터레이터 패턴은 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 줍니다.
  
-===== Observer =====+===== Observer (Behavioral) =====
 옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. 옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다.
  
-===== Singleton =====+===== Singleton (Creational) =====
 싱글턴 패턴 - 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다. 싱글턴 패턴 - 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다.
  
-===== Proxy =====+===== Proxy (Structural) =====
 프록시 패턴 - 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴 프록시 패턴 - 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴
  
-===== Strategy =====+===== Strategy (Behavioral) =====
 스트래티지 패턴(Strategy Pattern)에서는 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 스트래티지 패턴(Strategy Pattern)에서는 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
  
-===== State =====+===== State (Behavioral) =====
 스테이트 패턴을 이용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다. 스테이트 패턴을 이용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다.
  
-===== Template Method =====+===== Template Method (Behavioral) =====
 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있습니다. 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있습니다.
 +
 +----
 +  * 생성(Creational) 패턴
 +    * 추상 팩토리 (Abstract Factory)
 +    * 빌더 (Builder)
 +    * 팩토리 메서드 (Factory Methods)
 +    * 프로토타입 (Prototype)
 +    * 싱글턴 (Singleton)
 +  * 구조(Structural) 패턴
 +    * 어댑터 (Adapter)
 +    * 브릿지 (Bridge)
 +    * 컴포지트 (Composite)
 +    * 데코레이터 (Decorator)
 +    * 퍼사드 (Facade)
 +    * 플라이웨이트 (Flyweight)
 +    * 프록시 (Proxy)
 +  * 행위(Behavioral) 패턴
 +    * 책임 연쇄(Chain of Responsibility)
 +    * 커맨드 (Command)
 +    * 인터프리터 (Interpreter)
 +    * 이터레이터 (Iterator)
 +    * 미디에이터 (Mediator)
 +    * 메멘토 (Memento)
 +    * 옵저버 (Observer)
 +    * 스테이트 (State)
 +    * 스트래티지 (Strategy)
 +    * 템플릿 메서드 (Template Method)
 +    * 비지터 (Visitor)
 +
  
 ===== MVC ===== ===== MVC =====
Line 58: Line 87:
   * 모델 2는 MVC를 웹 애플리케이션에 맞게 적용한 디자인이라고 할 수 있습니다.    * 모델 2는 MVC를 웹 애플리케이션에 맞게 적용한 디자인이라고 할 수 있습니다. 
   * 모델 2에서 컨트롤러는 서블릿으로 구현되며 뷰는 JSP/HTML로 구현됩니다.    * 모델 2에서 컨트롤러는 서블릿으로 구현되며 뷰는 JSP/HTML로 구현됩니다. 
 +
 +{{page>public:computer:java_spring_framework#design_patterns_used_in_spring_framework}}
 +
 +
 +==== SEE ALSO ====
 +  * [[https://supark7.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4%EC%9D%98-%EC%A2%85%EB%A5%98|디자인패턴의 종류]]
 +  * [[https://blog.naver.com/PostView.naver?blogId=hj_kim97&logNo=222295968816|대표적인 스프링 디자인패턴]]
 +
 +
 +
 +
  • public/computer/design_patterns.1635744866.txt.gz
  • Last modified: 2021/11/01 14:34
  • by alex