본문 바로가기

Design Pattern11

MVC 패턴 , Model - View - Controller | [Design pattern] 디자인 패턴 MVC Pattern 사용자 인터페이스를 구현하기 위한 구조 패턴 Model로 부터 UI를 분리 동시 개발 가능, Loose coupling, 용이한 변경 high cohesion: grouping related actions on A controller, grouping views for A model. 구성요소) Model : 어플리케이션 객체 View : 모델을 스크린에 표현 갱신된 model의 상태를 즉각 반영 one model multiple different views composite view Controller : 입력에 따라 반응 방식 바꿈 1. View --> Controller : 유저 행동 2. Controller --> Model : 상태 변경 3. Controller --> Vi.. 2021. 12. 29.
Abstract Factory Pattern - 생성, 팩토리 추상화와 제품군 생성 추상화 | 추상 팩토리 패턴 [Design pattern] 디자인 패턴 Abstract Factory 다양한 구성 요소 별로 객체의 집합 생성 같은 종류의 여러 개의 객체를 생성할 수 있는 클래스를 생성 생성 군들을 하나에 모아놓고 팩토리(Factory) 중에서 선택하게 하는 패턴 관련있는 서브 클래스를 묶어서 팩토리 클래스를 만들고, 이들 조건에 따라 객체를 생성하는 패턴 여러 개의 클래스를 하나의 추상 클래스로 묶어 한번에 교체할 수 있는 패턴 ex) 제품군 (A family of products) GUI widgets : window, scroll bar, button, text field .. Pizza ingredients : dough, sauce, cheese ... - 제품, 운영체제, 회사별로 유사한 제품이지만 지원하는 기능에 차이가 있을 경우, 기능별로 통.. 2021. 12. 26.
Factory Method Pattern 팩토리 메소드 패턴 - 생성, 다양한 유형의 객체 생성, 변경, 추가가 빈번히 일어나는 경우 | [Design pattern] 디자인 패턴 Factory Method 패턴 서브 클래스가 인스턴스를 결정하도록 하고 책임을 위임하는 패턴 객체의 생성을 서브 클래스에 위임하는 패턴 조건에 맞게 객체를 다르게 생성 결합도 줄이고 유지보수 용이 템플릿 메소드 패턴 사용 (Virtual - Constructor) 객체 생성 방법) 생성자 (new 연산자)를 사용하여 직접 생성 객체 생성 클래스 / 메소드 (factory class / method) 사용 -> 객체 생성을 추상화 문제점1) 다양한 종류의 피자 (객체)를 생성 변경 추가 제거 가능 생성자를 사용하여 객체 생성 Pizza orderPizza(String type) { Pizza pizza; if (type.equals(“cheese”)) { pizza = new CheesePizza(); .. 2021. 12. 21.
State Pattern 상태 패턴 - 행위, 내부 상태를 가져서 특정 상태에서의 행동들을 하나의 class에 캡슐화 | Design pattern 디자인 패턴 State pattern The State Pattern allows an object to alter its behavior when its internal state changes. The object will appear to change its class. 규칙에 따라 객체의 상태를 변화시키면서 객체가 할 수 있는 행위를 바꾸는 패턴 특정 메소드가 객체의 상태에 따라 다른 기능을 수행 객체의 상태에 따라 동일한 루틴에서 다른 행동을 할 수 있다. 용어 내부 상태 프로그램의 실행 과정에서 현재 유지하고 있는 변수 및 실행 상황. 내부 상태를 가지는 머신 자판기, 엘레배이터, ATM 기기 내부 상태를 가지는 머신은 현재 상태에 따라 같은 행동(사건) 이 다른 결과를 낳을 수 있다. ex) 자판기내 음.. 2021. 12. 16.
Template Method Pattern 템플릿 패턴 - 행동, 메소드 내에 알고리즘 골격을 정의한다. | Design Pattern 디자인 패턴 Template Method Pattern 작업의 일부분을 캡슐화하여 전체 일을 수행하는 구조는 그대로 유지하면서 특정 부분을 바꾸는 패턴 메소드내에 알고리즘 골격을 정의한다. variant step의 구현을 subclass들에게 미룬다.(defer) 하위 클래스는 알고리즘 구조를 변경하지 않는다. variant step을 자신의 방법으로 구현한다. The AbstarctClass 는 템플릿 메소드를 포함한다. templateMethod() templateMethod() 에서 primitiveOperation 들이 사용된다. concrete invariant operations abstract variant operations hook (default or null operation) primitiveO.. 2021. 11. 27.
Observer Pattern 옵저버 패턴 code , java built-in package | Design pattern 디자인 패턴 Java에는 기본 지원 기능이 있습니다. 여러 API에 포함되어 있다. 일반적으로 java.until package에 The Observer interface and The Observable class 가 있다. Subject and Observer interface 와 비슷하다. The Observable class keeps track of all yours observers and notifies them for you This should look familiar. In fact, it's exactly the same as our previous class diagram. How Java’s built-in Observer Pattern works For an Object to become a.. 2021. 11. 20.
Observer Pattern 옵저버 패턴 - 행동, 구독자(observers)와 주제(subject) | Design pattern 디자인 패턴 Observer Pattern Observer pattern allows a number of observer objects to synchronize its state with the subject's state. Observers(구독자, 가입자, 관찰자) 에게 특정 주제(subject)를 Push 하여 전달하거나 Pull 해서 Observer 를 필요시 주제를 가져온다. 옵저버 패턴을 트위터에 비유하여 표현한 사진을 보니 쉽게 이해가 되는 것 같다. 2개의 객체가 loosely coupled 되어있을때 , 두 객체는 상호작용한다. but 그것들은 서로를 모른다. 옵저버 패턴은 subject와 loosely coupled 된 옵저버들의 객체 설계 제공한다. 왜 그럴까? 오직 한 주제가 특정 인터페이스.. 2021. 11. 9.
Strategy Pattern ㅡ 행위, 행동(Behavior)을 인터페이스로 추상화 시켜 구성(composition)을 통해 행동들을 사용 | Design Pattern 디자인 패턴 Strategy Pattern 클래스별로 캡슐화되어 있는 객체들을 교체할 수 있도록 함으로써 같은 작업을 다른 알고리즘으로 사용할 수 있도록 하는 패턴 Strategy 클래스 내 각각 캡슐화 그리고 구성을 통해 알고리즘 바꿀 수 있다. Strategy Pattern 은 클라이언트가 독립적으로 다양한 알고리즘을 사용한다. 다형성을 이용하여 특정 객체에 종속되지 않도록 한다. 다른 부분을 분리하여 캡슐화한다. 상속하지 않는 대신 인터페이스를 통해 캡슐화(추상화)한다. (상속 대신 구성 사용) 분리된 strategies 인터페이스에서 behaviors(행동)이 정의된다. behavior 과 behavior을 사용하는 class 사이에는 더 나은 decoupling 이다. Behaviors 는 런타임시에도 변경.. 2021. 11. 4.
Composite Pattern Example code, Designing Menus with Composite .java | Design Pattern디자인 패턴 Designing Menus with Composite Waitress Waitress는 MenuComponent 인터페이스/추상 클래스 를 통해 Menu 와 Menuitems에 access 한다. MenuComponent Menu 와 MenuItem 의 interface를 나타낸다. abstract class 를 통해 클래스 내에 원하는 기본 메소드 구현 제공 공통연산과 Menu 조작 연산으로 구성 공통연산 : getName, getDescription, getPrice, print 조작연산 : add, remove, getChild MenuItem Both Menu and Menus override print() Menu we’ll use the getName() andngetDescription().. 2021. 10. 27.
Facade 패턴 (퍼사드 패턴) - 구조, 통합 인터페이스 제공 | Design Pattern 디자인 패턴 / Facade Pattern 복잡한 시스템을 구조화하여 쉽게 사용 문제점) : 여러 개의 구성요소(interface)로 구성된, 사용 절차가 복잡한 시스템 Key Idea : subsystem (a set of interfaces)에 대해 통합 인터페이스 제공 예제 코드 public class HomeTheaterFacade { Amplifier amp; Tuner tuner; DvdPlayer dvd; CdPlayer cd; Projector projector; TheaterLights lights; Screen screen; PopcornPopper popper; public HomeTheaterFacade(Amplifier amp, Tuner tuner, DvdPlayer dvd, CdPlayer c.. 2021. 10. 12.
[Design Pattern] 디자인 패턴 / UML Base .java 2021.09 디자인 패턴 강의 정리 UML A standard language for writing software blueprints 어휘 (Vocabularies) 세 종류의 Building block 으로 구성된다. - Things , Relationships, Diagrams Things Structural things 모델의 정적 부분 (개념적 요소)을 나타냄 interface, class, Behavioral things 모델의 동적 부분 (행동)을 나타냄 interaction (객체간 messaging), Grouping things organizational part package and its variations Annotational things explanatory part note.. 2021. 9. 11.