Singleton Pattern : 클래스의 인스턴스(객체)가 오직 1개만 생성되도록 하는 것 - 필요할 때마다 똑같은 인스턴스를 만드는게 아니라, 이미 생성해둔 기존 인스턴스를 사용 - 전역 인스턴스로 만들기 떄문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉬움 - 메모리 낭비를 막음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Singleton { // static : 단 하나의 인스턴스만 담기 위함 private static Singleton instance; private Singleton() {} // private으로 선언된 instance를 다른 클래스에서 사용하기 위함 public static Singleton getInstance()..
Decorator : 객체 결합으로 기능을 동적으로 추가 OCP (Open-Closed Principle) : 디자인 원칙 - 클래스는 확장되어야 하고, 코드는 변경되어서는 안됨 - 강하고 튼튼한 디자인 가능 사용 이유 : 기존 코드를 건드리지 않고 확장하기 위함 장점 - 확장하는 데이터가 다양하고 일정하지 않을 때 효율적 - 기존 코드를 수정하지 않고 확장 할 때 단점 - 자잘한 클래스가 많아짐 - 과도한 사용시 가독성이 떨어지고 디버깅이 어려워짐 - 조건이 끝날 때 까지 함수를 계속 콜 시킴 -> 재귀함수와 상당히 비슷한 구조를 가짐 - 들어간 만큼 return이 됨
Strategy Pattern : 같은 문제를 해결하는 여러 알고리즘을 클래스별로 캡슐화하여 사용 - 같은 문제를 다른 알고리즘으로 해결할 수 있게 하는 패턴 ex) 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을 때 - '주입' 개념으로 들어가면 전략 패턴으로 간주 사용 이유 : 장점 - 동일 계열 알고리즘을 생성할 수 있음 -> 같은 함수의 중복을 제거 - 객체 행위에 대한 서브 클래스를 이용하지 않음 -> 상위 클래스로 Interface를 정의하면, 본 소스는 건드릴 필요가 없음 - 조건문을 사용하지 않음 - 구현을 선택할 수 있음 단점 - 사용하기 전에 클래스를 알아야 함 - 메모리를 많이 사용하게 됨 Strategy : 어떤 목적을 달성하기 위해 ..