개발/디자인 패턴
-
빌더 패턴개발/디자인 패턴 2020. 1. 16. 10:08
객체의 생성과 표현을 분리해, 동일한 생성 절차에서 다른 결과가 나올 수 있게 한다. 생성자만으로는 해결하기 어려운 문제를 위한 패턴. Product의 생성자는 비워 놓아 Builder를 사용하도록 강제한다. set 메서드들은 직접 사용하지 않고, Builder 클래스의 Build 메서드 내에서 사용한다. Director 클래스에서 Builder 객체를 생성한 뒤 Construct() 함수를 호출한다. Unity 예제 코드 public class CharacterBuilder { private int hp; private int attack; private int attackSpeed; public CharacterBuilder SetHp(int hp) { this.hp = hp; return this;..
-
추상 팩토리 패턴개발/디자인 패턴 2020. 1. 16. 10:07
객체를 구성하는 부분을 추상화한 뒤 여러 서브클래스가 상속받아 객체를 구성하는 패턴. 객체를 구성하는 클래스들의 생성 공정을 추상화한다. 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어 객체를 생성한다. 객체 생성 과정에 일관성이 있지만, 구현 내용이 추가될 때 추상 클래스도 수정해야 한다. Abstract class를 사용해 객체의 생성 과정을 추상화. 일관성을 갖게 한다. 생성되는 Product 객체도 Abstract class를 통해 추상화한다. Client 함수를 통해 A와 B객체의 일관된 생성 방법을 규정한다.
-
팩토리메소드 패턴개발/디자인 패턴 2020. 1. 16. 10:06
객체 생성을 위한 인터페이스를 정의, 생성할 인스턴스의 클래스는 파생클래스에서 결정하도록 하는 패턴. 팩토리 메소드는 객체 생성을 처리하며, 파생 클래스가 어떤 클래스를 만들 지 결정하게 함으로써 객체 생성 작업을 캡슐화한다. 기반클래스에 있는 클라이언트 코드와 파생클래스에 있는 객체 생성 코드를 분리하는 것. ConcreteACreator, ConcreteBCreator 이 같은 Creator 클래스를 상속한다. 따라서 두 클래스 모두에서 FactorMethod() 를 사용해 서로 다른 A와 B 인스턴스를 생성할 수 있다.
-
싱글턴 패턴개발/디자인 패턴 2020. 1. 16. 10:05
싱글턴 패턴을 사용해 인스턴스가 하나뿐인 객체를 만들 수 있다. 이 패턴이 적용된 객체는 하나만 생성될 수 있고, 어디서든 접근할 수 있다. 스레드 풀, 캐시, 대화상자, 설정, 디바이스 드라이버 등 클래스의 객체가 오직 하나만 생성되는 경우 사용한다. 기본적인 싱글턴 패턴 싱글턴 패턴 클래스는 private static 스스로의 객체(_instance) 를 갖는다. protected를 통해 기본 생성자를 클래스 외부에서 호출할 수 없게 하고, 새로운 public static 메소드를 통해 만들어진 객체가 없을 때만 작동하는 생성자를 만든다. Lock object 를 추가한 싱글턴 멀티 스레드 애플리케이션에서 동시에 인스턴스를 호출하는 경우를 대비해 Lock object를 추가할 수 있다. 특정 블럭의 ..
-
디자인패턴이란개발/디자인 패턴 2020. 1. 16. 10:04
디자인패턴은 많은 개발자들에 의해 입증된 방법, 좋은 사례의 모음이다. 개발자와 설계자의 공통 언어라 할 수 있다. 객체지향 언어의 원칙을 기본으로 한다. 캡슐화: 데이터와 함수를 하나로 묶는다. 정보 은닉: 데이터를 숨기고 연산만을 통해 접근을 허용한다. 추상화: 불필요한 부분을 생략하고 중요한 것만 남겨 모델화한다. 상속성: 하위 클래스는 상위 클래스의 모든 속성과 연산을 물려받는다. 다형성: 하나의 메시지에 대해 객체마다 고유한 방법으로 반응한다. 서로 다른 클래스의 인스턴스를 같은 방법으로 다룰 수 있다. 디자인 패턴 설계 원칙 단일 책임 원칙: 하나의 클래스는 하나의 역할을 담당한다. 개방 폐쇄의 원칙: 확장에는 열려 있고, 변형에는 닫혀 있도록 한다. 리스코프의 대체 원칙: 상위 타입 객체를 ..