공부/디자인 패턴 3

[공부/디자인 패턴] Prototype 패턴

Prototype Pattern 객체를 생성하는 데 비용(시간과 자원)이 많이 사용되고, 비슷한 객체가 이미 있는 경우에 사용되는 패턴입니다. Original 객체를 새로운 객체에 복사하여 우리의 필요에 따라 수정하는 메커니즘을 제공합니다. 이 패턴은 복사를 위해 #clone() 을 사용합니다. #clone()에서는 옅은 복사 혹은 깊은 복사, 이 둘을 개발자가 정의가능합니다. Prototype Pattern Structure public class Minion implements Cloneable { private String name; private String job; public Minion(String name) { this.name = name; } public Minion(String nam..

[공부/디자인 패턴] Singleton 패턴

Singleton Pattern 인스턴스를 하나만 생성하는 패턴으로 메모리 측면에서 낭비를 방지하고, 이미 생성된 인스턴스를 활용하기에 속도 측면에서 이점이 있습니다. 또, 데이터 공유가 쉽습니다. 물론, 여러 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시에 접근할 경우, 동시성 문제가 발생할 수 있습니다. Singleton Pattern Structure public class Singleton { public static Singleton instance = new Singleton(); private Singleton() { // 외부 생성자 차단 } public static Singleton getInstance() { return instance; } public void say() { ..

[공부/디자인 패턴] Strategy 패턴

Strategy Pattern 알고리즘의 인터페이스를 정의하고, 각각의 인터페이스를 캡슐화하여 동적으로 교체 사용 가능하도록 구현하는 디자인 패턴입니다. 클라이언트와는 독립적으로 구현되기에 새로운 알고리즘을 추가하거나 기존의 알고리즘을 쉽게 변경할 수 있습니다. Strategy Pattern Structure Context: 실제 각각의 알고리즘에 대한 인스턴스를 가진다. Interface: 각각의 알고리즘을 가져야할 공통적인 인터페이스 Algorithm1, Algorithm2: 실제 인터페이스 구현. 각각의 알고리즘을 구현 예제 코드 public interface PersonInterface { void action(); } PersonInterface로 공통 인터페이스인 #action을 가집니다. p..