OOP 4

전략 패턴(Strategy Pattern)

전략 패턴(Strategy Pattern)은 소프트웨어 디자인 패턴 중 하나로, 행동 관련 디자인 패턴에 속한다. 이 패턴은 객체의 행위를 캡슐화하여 동적으로 행위를 바꿀 수 있게 해주는 패턴이다. 즉, 알고리즘을 클래스에 캡슐화하고, 런타임에 알고리즘을 선택할 수 있도록 하는 것이 전략 패턴의 핵심이다.  전략 패턴의 구조전략 패턴은 다음과 같은 세 가지 주요 구성 요소로 이루어져 있다.Context클라이언트가 사용하는 주요 인터페이스를 제공하는 클래스Context는 전략 인터페이스를 참조하고 있으며, 이를 통해 실제 전략을 실행한다.클라이언트는 Context 객체와 상호작용하며, 특정 전략을 선택할 수 있다.Strategy(전략) 인터페이스다양한 알고리즘을 정의하는 공통 인터페이스모든 구체적인 전략 ..

데코레이터 패턴(Decorator Pattern)

데코레이터 패턴(Decorator Pattern)은 객체 지향 디자인 패턴 중 하나로, 기존 객체에 새로운 기능을 동적으로 추가하거나 기존 기능을 변경할 수 있는 패턴이다. 이 패턴은 상속을 사용하지 않고도 객체의 기능을 확장할 수 있게 해주며, 컴포지션(Composition)을 활용해 유연한 구조를 제공한다.   데코레이터 패턴의 특징동적 기능 확장 : 데코레이터 패턴은 객체를 감싸는(wrapper) 방식으로 기존 객체에 새로운 기능을 추가한다. 이렇게 함으로써 원래 객체의 코드를 변경하지 않고도 기능을 확장할 수 있다.유연성 : 여러 데코레이터를 조합하여 객체의 기능을 점진적으로 확장할 수 있다. 이를 통해 객체의 기능을 필요에 따라 유연하게 구성할 수 있다.대체 가능성 : 데코레이터는 원래 객체와 ..

컴포지션(Composition)

컴포지션(Composition)은 객체 지향 프로그래밍에서 객체 간의 관계를 설정하는 방법 중 하나로, 다른 객체를 포함하거나 그 객체의 일부로 사용하는 방식이다. 컴포지션은 객체 간의 '포함 관계'를 의미하며, 이는 'has-a' 관계로도 표현한다. 이는 상속(Inheritance)과 대조적인 개념으로, 상속이 부모-자식 관계를 통해 코드 재사용을 가능하게 한다면, 컴포지션은 한 객체가 다른 객체를 포함함으로써 기능을 확장하거나 새로운 기능을 제공하는 방법이다.  컴포지션의 특징유연성 : 컴포지션을 사용하면 객체의 기능을 쉽게 교체하거나 변경할 수 있다. 예를 들어, 포함된 객체를 다른 객체로 대체하는 방식으로 기능을 변경할 수 있기 때문에, 유연한 설계가 가능하다.재사용성 : 컴포지션을 통해 코드의..

OCP(Open Close Principle) - 개방폐쇄의 원칙

개방폐쇄원칙(Open-Closed Principle, OCP)은 객체 지향 프로그래밍(OOP)에서 중요한 설계 원칙 중 하나이다. 이 원칙은 로버트 C. 마틴(Robert C. Martin)이 제안한 SOLID 원칙의 다섯 가지 중 하나로 소프트웨어 모듈이나 클래스가 어떻게 설계되고 확장되어야 하는지를 다룬다.  개방폐쇄원칙의 정의개방폐쇄원칙은 "확장에는 열려 있고, 수정에는 닫혀 있어야 한다"는 원칙을 말한다.이 말은 소프트웨어 시스템이 새로운 기능을 추가하거나 확장하는 데는 열려 있어야 하지만, 기존의 코드 구조나 동작을 변경하지 않고도 확장이 가능해야 한다는 뜻이다. 예시class Shape { public void draw() { // 기본적인 도형을 그리는 로직 }}cla..

반응형