CS/디자인 패턴 3

(CS) 디자인 패턴 - 전략 패턴

전략 패턴 (정책 패턴)정의행동을 정의하는 여러 알고리즘을 캡슐화 하고, 이들 중 하나를 선택하여 사용할 수 있도록 만드는 디자인 패턴교체시기는 런타임 시점에 진행장점유연성알고리즘을 쉽게 교체하거나 확장할 수 있다유지보수성각 알고리즘이 별도의 클래스에 정의되어 있기 때문에 코드 수정이 간단하다개방/폐쇄 원칙 준수 (SOLID에서 OCP 파트)기존 코드를 수정하지 않고 새로운 알고리즘을 추가할 수 있다. → 확장성 또한 가지고 있다단점복잡성 증가알고리즘마다 클래스를 생성해야 하기 때문에, 클래스가 많아진다.사용자 혼란 가능성사용자가 어떤 전략을 선택해야 할지(알고리즘이 너무 많아서) 명확하지 않을 수 있다.사용하는 곳런타임에 알고리즘을 변경해야 할 때특정 동작을 여러 방식으로 구현해야 할 때코드가 조건문(..

CS/디자인 패턴 2025.01.09

(CS) 디자인 패턴 - 팩토리 패턴

팩토리 패턴정의객체를 사용하는 코드에서, 객체 생성 부분을 떼어내 추상화한 패턴상속 관계에 있는 두 클래스에서 상위 클래스가 뼈대를 결정하고, 하위 클래스에서 객체의 구체적 내용을 결정하는 패턴장점유연성상위, 하위 클래스가 분리 되기 떄문에 loose 한 결합을 가진다.인스턴스 생성방식에 전혀 알 필요가 없다캡슐화객체 생성 로직이 따로 떼어져 있기 때문에 리팩토링시, 특정 위치만 고치면 되므로, 유지 보수성이 증가한다.확장성새로운 클래스 추가 시 기존 코드를 수정하지 않고 확장할 수 있다단점복잡성 증가클래스가 많아지기 때문에, 코드 구조가 복잡해질 수 있다추가 계층팩토리 클래스가 추가되기 때문에, 코드의 가독성이 낮아질 수 있다사용하는 곳객체 생성 로직이 복잡한 경우객체 생성 시점이나 생성 방법을 유연하..

CS/디자인 패턴 2025.01.09

(CS) 디자인 패턴 - 싱글톤 패턴

디자인 패턴프로그램 설계시 발생했던 문제들을 하나의 "규약"으로 만들어 놓은 것의 집합체.♤ 들어가기전, 언어에 대해서!클래스정의 : 객체 지향 프로그래밍에서 데이터를 정의하고, 메서드(동작)을 묶어서 하나의 설계도를 만든 것특징객체를 생성하기 위한 틀 역할.필드(속성)와 메서드(동작)로 구성.예를 들어, Car라는 클래스는 자동차의 속성(브랜드, 색상), 동작(운전, 정지)등 을 정의할 수 있습니다.public class Car { String brand; String color; public void drive() { System.out.println("Driving..."); }} 인스턴스 정의 : 클래스를 기반으로 메모리에 생성된 실제 객체특징클래스는 설계도이면,..

CS/디자인 패턴 2025.01.07