# 전략 패턴 "클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴" 전략 패턴은 객체의 꽃이라고도 불린다. 전략 패턴은 템플릿 메서드 패턴과 유사하다. 차이점이 있다면 템플릿 메서드 패턴은 상속을 이용하여 문제를 해결하지만 전략 패턴은 객체 주입을 통해 문제를 해결한다. # 전략 패턴 적용X Q. 전략 패턴을 적용하지 않은 예시를 어떻게 들어야 할까요? (언제 어떤 코드에서 전략 패턴을 사용해야 하는지에 대해 알고 싶습니다.) public interface Strategy { public abstract void runStrategy(); } public class StrategyGun implements Strategy{ @Override public void runStrategy() ..
# 퍼사드 패턴 "복잡한 과정을 간단하게 표현하는 패턴" Facade는 "건물의 정면"을 의미하는 단어로 내부의 클래스를 추상화한 인터페이스를 외부에 제공해주는 의미를 지닌 패턴이다. # 퍼사드 패턴 적용x a~z까지의 기능들이 있습니다. a~z까지의 기능들을 모두 동작 시키기 위해서는 일일이 기능을 호출하고 동작 시켜야 하는 번거로움이 있습니다. # 퍼사드 패턴 적용o a~z까지의 기능들이 있습니다. a~z까지의 기능들을 모두 동작 시키기 위해서는 하나의 클래스에 모두 선언을 하면 다음 부터 버튼하나만 이용하여 a~z 모든 기능들을 동작시키고 멈추게 할 수 있습니다. 즉, 퍼사드 패턴이란 여러 클래스에 있는 기능들을 호출해야 하는 경우 일일이 호출하게 되면 코드가 복잡해지고 귀찮은 점이 많이 있습니다...
# 싱글턴 패턴 "클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴" 싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 커넥션 풀, 스레드 풀, 디바잉스 설정 객체등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 또 프로그램이 예상치 못한 결과를 낳을 수 있다. 싱글턴 패턴은 오직 인스턴스를 하나만 만들고 그것을 계속해서 재사용한다. 싱글턴 패턴은 의미상 두 개의 객체가 존재할 수 없다. 싱글턴 패턴을 구현하려면 객체 생성에 제약을 걸어야 한다. # 구현 방법 1. new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정한다. private 생성자이기에 외부 클래스나 메인 클래스에서 new를 이용한 객체를 생성할 수 없다. 2. 유일한 ..
# 프록시 패턴(Proxy) // 프록시를 이용하지 않은 호출 public class Service { public String runSomething() { return "서비스 짱!!"; } } public class ClientWithNoProxy { public static void main(String[] args){ Service service = new Service(); System.out.println(service.runSomething()); } } // 프록시를 적용한 호출 public interface IService { String runSomething(); } public class Service implements IService { public String runSomet..