Java/Java 일골드 2022. 5. 25. 22:17
상태 패턴 /** * 디자인패턴 - 스테이트 패턴 * 스테이트 패턴은 상태에 따라 동일한 작업이 다른 방식으로 실행될 때 * 해당 상태가 작업을 수행하도록 위임하는 디자인 패턴이다. */ public class StatePattern { public static void main(String[] args) { TV tv = new TV(); tv.turn_on(); tv.turn_off(); tv.turn_off(); tv.turn_on(); tv.turn_off(); } } interface State { public void turn_on(TV tv); public void turn_off(TV tv); } class TV { private State state; public TV() { state ..
Java/Java 일골드 2022. 5. 25. 00:02
싱글톤패턴 /** * [싱글톤 패턴] * 인스턴스가 오직 하나만 생성되는 것을 보장하고 * 어디서든 이 인스턴스에 접근할 수 있또록 하는 디자인 패턴 * * as-is: Thread safe Lazy initialization (스레드 안전한 늦은 초기화)을 주석처리하고 * to-be: Initialization on demand holder idiom (holder에 의한 초기화) 로 변경 * * to-be식 방법은 가장 많이 사용되는 방법이다. * jvm은 class가 로드되는 시점에 원자성을 보장함. */ public class Singleton { public static void main(String[] args) { Bank bank1 = Bank.getBank(); Bank bank2 = B..
Java/Java 일골드 2022. 5. 24. 22:55
전략패턴 /** * [자바 객체지향 디자인 패턴 - 전략패턴] * 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 * 이들이 필요할 때 교체할 수 있도록 함으로써 * 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴이다. * @author JHS * */ public class Strategy { public static void main(String[] args) { Robot dagan = new Dagan("다간"); Robot gundam = new Gundam("건담"); dagan.setMovingStrategy(new WalkingStrategy()); dagan.setAttackStrategy(new MissileStrategy()); gundam.setMo..