Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

디자인 패턴의 개념과 종류 본문

기타

디자인 패턴의 개념과 종류

코드와이 2021. 11. 29. 11:52

 

디자인 패턴

  • 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 문제들이 또 발생했을 때 재사용할 수 있는 솔루션
  • 이미 만들어져서 잘 되는 것을 다시 만들 필요가 없다는 뜻

GoF 디자인 패턴

More Actions

생성패턴구조패턴행위패턴

구분 생성패턴 구조패턴 행위패턴
종류 추상 팩토리
빌더
팩토리메서드
프로토타입
싱글턴
어댑터
브리지
컴퍼지트
데커레이터
퍼사드
플라이웨이트
프록시
책임 연쇄
커맨드
인터프리터
이터레이터
미디에이터
메멘토
옵서저
스테이트
스트래티지
탬플릿 메서드
비지터
개념 객체 생성에 관련된 패턴 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

 

싱글턴 패턴

  • 개념
    • 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록하는 패턴
    • '생성(Creational) 패턴' 중 하나
  • 하나의 인스턴스만을 생성하는 책임이 있으며 getInstance 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행
  • public class Printer {
    	// 외부에 제공할 자기 자신의 인스턴스 
    	private static Printer printer = null; 
        
    	private Printer() { } // 자기 자신의 인스턴스를 외부에 제공 
        
    	public static Printer getPrinter(){ 
    		if (printer == null) { 
    			// Printer 인스턴스 생성 
    			printer = new Printer(); 
    		} 
    		return printer;
    	}
    }
  • 문제점
    • 다중 스레드에서 Printer 클래스를 이용할 때 인스턴스가 1개 이상 생성될 수도 있다.

 

Strategy 패턴

  • 개념
    • 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있다.
  • 어던 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등
  • Strategy
    • 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법
  • ConcreteStrategy
    • 스트래티지 패턴에서 명시한 알고리즘을 실제로 구현한 클래스
  • Context
    • 스트래티지 패턴을 이용하는 역할을 수행

Factory Method 패턴

  • 개념
    • 객체 생성 처리를 서브 클래스로 분리해 객체 생성의 변화에 대비하는데에 유용
  • Product
    • 팩토리 메서드로 생성될 객체의 공통 인터페이스
  • ConcreteProduct
    • 구체적으로 객체가 생성되는 클래스
  • Creator
    • 팩토리 메서드를 갖는 클래스
  • ConcreteCreator
    • 팩토리 메서드를 구현하는 클래스로 ConcreteProduct 객체를 생성

 

Reference

'기타' 카테고리의 다른 글

데이터베이스에 관하여  (0) 2021.11.30
Thread란?  (0) 2021.11.29
Maven & Gradle  (0) 2021.11.29
Web Server vs WAS  (0) 2021.11.29
형상관리 툴(CVS, SVN, Git)  (0) 2021.11.29