전략 패턴

알고리즘 계열을 정의하고 각각을 캡슐화하고 상호 교환 가능하게 만드십시오. 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있습니다.

참가자들


  • 전략: 지원되는 모든 알고리즘에 공통적인 인터페이스를 선언합니다. 컨텍스트는 이 인터페이스를 사용하여 ConcreteStrategy에서 정의한 알고리즘을 호출합니다
  • .
  • ConcreteStrategy: Strategy 인터페이스를 사용하여 알고리즘을 구현합니다
  • .
  • 컨텍스트: ConcreteStrategy 개체로 구성됩니다. Strategy 개체에 대한 참조를 유지합니다. Strategy가 해당 데이터에 액세스할 수 있도록 인터페이스를 정의할 수 있습니다.

  • 암호



    public class Main {
    
        public static void main(String[] args) {
            Context context;
            context = new Context(new ConcreteStrategyA());
            context.contextInterface();
            context = new Context(new ConcreteStrategyB());
            context.contextInterface();
        }
    }
    
    public interface Strategy {
    
        void algorithmInterface();
    
    }
    
    public class ConcreteStrategyA implements Strategy {
    
        @Override
        public void algorithmInterface() {
            System.out.println("Called ConcreteStrategyA.AlgorithmInterface()");
        }
    
    }
    
    public class ConcreteStrategyB implements Strategy {
    
        @Override
        public void algorithmInterface() {
            System.out.println("Called ConcreteStrategyB.AlgorithmInterface()");
        }
    
    }
    
    public class Context {
        private Strategy strategy;
    
        public Context(Strategy strategy) {
            this.strategy = strategy;
        }
    
        public void contextInterface()  {
            strategy.algorithmInterface();
        }
    }
    
    

    산출



    Called ConcreteStrategyA.AlgorithmInterface()
    Called ConcreteStrategyB.AlgorithmInterface()
    




    eidherjulian61 / 디자인 패턴






    좋은 웹페이지 즐겨찾기