CS/디자인 패턴 8

OOP의 디자인 패턴

목차 SOLID 디자인 패턴 생성 패턴 구조 패턴 행위 패턴 객체지향 프로그래밍의 5가지 설계 원칙 SOLID란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙이다. 아래의 원칙을 지킨다면 시간이 지나도 변경이 용이하고, 유지보수와 확장이 쉬운 소프트웨어를 개발하는데 도움이 된다. [ 단일 책임 원칙 : SRP(Single Responsibility Principle) ] 모듈이 변경되는 이유가 1가지 이어야 한다는 의미. 여기서 변경되는 이유가 한가지라는 것은 해당 모듈이 여러 대상 또는 액터들에 대해 책임을 가져서는 안되고, 오직 하나의 액터에 대해서만 책임을 져야 한다는 것을 의미한다. 만약 어떤 모듈이 여러 액터에 대해 책임을 가지고 있다면 여러 액터들로부터 변경에 대한 요구가 올 수 있으므로..

CS/디자인 패턴 2024.04.03

최종 정리

1. Singleton 패턴 기본 구조 public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if(uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } ... } 해당 코드는 멀티 스레드 환경에서 문제가 발생할 수 있다. 해결 1. public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static synchroni..

CS/디자인 패턴 2023.12.15

State Pattern

목차 상태 패턴의 발견 상태 패턴의 구조와 실행시간 동작원리 전략 패턴과의 유사성 State Pattern 목적 객체의 상황을 동작과 연결하여 개체가 내부 상태에 따라 다양한 방식으로 동작할 수 있도록 한다. 언제 사용하나요? 객체의 동작이 상태에 영향을 받아야 한다. 복잡한 상태를 객체의 상태에 따라 동작과 연결한다. 상태 사이의 전환은 명시적이어야 한다. 상태 & 동작 구현 상태 Coding final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static int SOLD = 3; int state = SOLD_OUT; Code 쓰기 public class GumbleM..

CS/디자인 패턴 2023.12.12

Iterator Pattern

목차 Iterator pattern 발견 Iterator pattern 구조 자바에 있는 반복자 Class Iterator Pattern Cursor로 알려져있다. 기본 표현을 노출하지 않고 집계 개체의 요소에 액세스할 수 있습니다. 이런 상황에서 사용한다. 전체 표현에 대한 접근 없이 요소에 대한 접근이 필요한 경우 요소를 여러 번 또는 동시에 순회해야 하는 경우 순회를 위한 균일한 인터페이스가 필요한 경우 다양한 반복기의 구현 세부 사항 간에 미묘한 차이가 존재하는 경우 집계 개체는 해당 개체를 단위로 그룹화할 목적으로 다른 개체를 포함하는 개체입니다. 컨테이너 또는 컬렉션이라고도 합니다. 속보 오브제빌 식당과 팬케이크 집이 합병되었습니다! 메뉴는 병합해야 합니다. 소유자는 메뉴 항목의 구현에 동의합..

CS/디자인 패턴 2023.12.01

OOA/D

Object-Oriented Analysis and Design ❑ 객체 지향 분석(OOA) 도메인 개념/객체(문제 도메인의 객체)를 발견합니다. ❑ 객체 지향 디자인(OOD) 소프트웨어 개체 정의(정적) 요구 사항을 충족하기 위해 어떻게 협력할지 정의합니다(동적). OOAD 예시 - 주사위 게임 OOA 1. Use case를 정의 2. 도메인 모델을 정의 OOD 1. 인터렉션 다이어그램을 정의 2. 클래스 다이어그램 설계를 정의 UML "UML(Unified Modeling Language)은 시스템의 아티팩트를 지정, 구성 및 문서화하기 위한 시각적 언어입니다." ❑ UML을 사용하는 3가지 방법 스케치 개념적 관점 문제 또는 솔루션 공간의 어려운 부분을 탐색하기 위해 비공식적이고 불완전한 다이어그램..

CS/디자인 패턴 2023.10.25

OOP : 객체 지향 패러다임 리뷰

ADT(abstract data type) : 추상 데이터 유형 데이터 및 관련 연산을 하나의 구문 단위로 캡슐화 단일 구문 단위 프로그램 구성, 수정 가능성 향상(데이터 구조와 관련된 모든 것이 함께 있음), 별도의 컴파일 인캡슐레이션 신뢰성을 높임. 데이터 표현을 숨김으로써 사용자 코드는 유형의 객체에 직접 접근할 수 없거나 표현에 의존할 수 없으므로 사용자 코드에 영향을 주지 않고 표현을 변경할 수 있습니다. 객체 지향 패러다임(Object-Oriented Paradigm) Polymorphism : 다형성 동작(일반적으로 가상)을 다른 클래스에서 다른 방식으로 수행할 수 있는 객체 지향 소프트웨어의 속성입니다. 동일한 이름의 메서드가 여러 개 있어야 합니다. 실행할 개체의 선택은 변수에 있는 개체..

CS/디자인 패턴 2023.10.25

Decorator Pattern

목차 문제 상황에 대한 소개 데코레이터 패턴의 발견 데코레이터 패턴의 구조와 실행 동작원리 Java I/O에서의 데코레이터 적용 디자인 패턴 이 패턴은 다음과 같은 상황에서 사용됩니다: 1. 객체의 책임과 동작을 동적으로 변경해야 할 때. 2. 구체적인 구현을 책임과 동작에서 분리해야 할 때. 3. 서브클래싱(하위 클래스 생성)을 통해 변경을 달성하는 것이 비실용적이거나 불가능할 때. 4. 특정 기능이 객체 계층 구조의 상위에 존재해서는 안 될 때. 5. 구체적인 구현 주변에 많은 작은 객체가 존재하는 것이 허용될 때. Decorator 패턴은 객체의 동작을 확장하거나 수정하기 위해 새로운 레이어(장식자)를 추가하는 방식으로 동작합니다. 이를 통해 객체의 책임과 동작을 동적으로 조정하고, 상속을 사용하지..

CS/디자인 패턴 2023.10.24

디자인 패턴 공부

디자인 패턴 소개 디자인패턴 정의 3가지 부분 "문맥에서 문제의 해결책"이다. Context : 적용되는 패턴이 반복적으로 적용되야 하는 상황이다. Problem : 문맥에서 이루려고 하는 목표, 문맥에서 발생하는 모든 제약조건을 포함한다. Solution : 문제를 해결하기 위해 적용 가능한 일반적인 디자인 패턴의 레벨 Architectural pattern 전체적인 골격 구조와 조직에 영향을 미친다. Design pattern 하위 시스템이나 컴포넌트 또는 이들간의 관계를 세분화한다. 전체적인 구조에는 영향을 주지않는다. Coding pattern 낮은 레벨의 패턴 UML Review 1. Use Case Diagram use case diagram은 use case와 actors의 이름과 그들 사이..

CS/디자인 패턴 2023.10.10