자바 개발 의 디자인 모델 - 전략 모델 (Strategy Pattern)

아 날로 그 장면:
유 비 는 강동 에 가서 아 내 를 얻 으 려 고 한다. 떠 나 기 전에 제갈량 은 조 운 (들러리) 에 게 세 가지 묘책 을 주 었 다. 천기 에 따라 어 려 운 문 제 를 해결 하 겠 다 고 말 했다. 헤 이, 말 하지 마라. 정말 큰 문 제 를 해결 했다. 결국 주유 가 부인 을 모시 고 또 군 대 를 꺾 었 다. 그러면 우리 가 먼저 이 상황 이 어떤 지 보 자.
먼저 이 장면 의 요 소 를 말한다. 세 가지 묘책, 하 나 는 금 낭, 하 나 는 조 운 이다. 묘 계 는 샤 오 량 동지 가 준 것 이다. 묘 계 는 금 낭 에 두 는 것 이다. 흔히 금 낭 묘책 이 라 고 부 르 잖 아. 그러면 조 운 은 일 하 는 사람 이 금 낭 에서 묘 계 를 꺼 내 집행 한 다음 에 이 기 는 것 이다.
아 날로 그 그래프
자바 프로그램
  • 세 가지 묘책 이 같은 유형 이 라면 인 터 페 이 스 를 쓰 자.
  • package com.zanelove.strategy;
    
    /** * I'm glad to share my knowledge with you all. *          ,                      * */
    
    public interface IStrategy {
        //                
        public void operate();
    }
  • 세 가지 묘책, 세 가지 실현 유형:
  • 1.
    package com.zanelove.strategy;
    
    /** * I'm glad to share my knowledge with you all. *       ,         */
    
    public class BackBoor implements IStrategy {
        public void operate() {
            System.out.println("      ,           ");
        }
    }

    2.
    package com.zanelove.strategy;
    
    /** * I'm glad to share my knowledge with you all. *          */
    
    public class GivenGreenLight implements IStrategy {
        public void operate() {
            System.out.println("        ,  !");
        }
    }

    3.
    package com.zanelove.strategy;
    
    /** * I'm glad to share my knowledge with you all. *      ,     */
    
    public class BlockEnemy implements IStrategy {
        public void operate() {
            System.out.println("     ,    ");
        }
    }
  • 세 가지 묘책 이 금 낭 에 들 어 갔다.
  • package com.zanelove.strategy;
    
    /** * I'm glad to share my knowledge with you all. *     ,       */
    
    public class Context { 
        //    ,        
        private IStrategy strategy;
        public Context(IStrategy strategy){
            this.strategy = strategy; 
        }
    
        //     ,      
        public void operate(){
            this.strategy.operate(); 
        }
    }

    그 다음 에 조 운 웅 은 씩씩 하 게 세 개의 금 주머니 를 들 고 노년 대열 에 들 어간, 아직도 순정 소녀 와 결혼 하고 싶 은, 색정 에 빠 진 유 할 아버 지 를 데 리 고 가 려 고 한다. 하 이, 아직 말 하지 마라, 샤 오 량 의 세 가지 묘책 은 정말 괜찮다. 봐 봐:
  • 조 운 이 등장 하여 한 사람 이 두 사람 을 당 한다.
  • package com.zanelove.strategy;
    
    /** * I'm glad to share my knowledge with you all. */
    
    public class ZhaoYun { 
        /** *      ,           ,       */
        public static void main(String[] args) { 
            Context context;
    
            //        ,    
            context = new Context(new BackDoor()); //    
            context.operate(); //     
    
            //       ,    
            context = new Context(new GivenGreenLight());
            context.operate(); //          
    
            //       ,  ?    
            context = new Context(new BlockEnemy()); 
            context.operate(); //     
        } 
    }

    정책 모드 장점:
    알고리즘 의 사용 과 알고리즘 자체 의 결합 을 해제 하면 변화의 구체 적 인 알고리즘 을 봉인 할 수 있다.전략 모델 은 계승 을 제외 한 탄력 적 인 대체 방안 입 니 다. 만약 에 계승 을 사용 하여 하나의 종 류 를 정의 하면 다음 부분의 파생 류 가 있 습 니 다. 이때 기 류 를 갇 힐 것 입 니 다. 이 를 수정 하 는 것 은 매우 쉽 지 않 고 전략 모델 은 서로 다른 대상 을 조합 하여 행 위 를 바 꿀 수 있 습 니 다.
    정책 모드 단점:
    1. 고객 코드 는 각 전략 이 어떻게 실현 되 는 지 에 관심 을 가 질 필요 가 없 지만 몇 가지 전략 이 실현 되 고 구체 적 인 기능 상황 이 있 는 지 알 아야 필요 에 따라 어떤 전략 을 사용 할 수 있 습 니 다.2. 전략 모드 를 사용 한 후 작은 종류 가 많이 나타 납 니 다.
    이 세 가지 방법 으로 주 랑 은 "부인 을 모시 고 또 군 대 를 꺾 었 다" 는 것 이 야!이것 이 바로 전략 모델 이 고 내부 집적 저 결합 의 특징 도 나 타 났 습 니 다. 또 하 나 는 확장 성 입 니 다. 즉, OCP 원칙 입 니 다. 전략 류 는 계속 증가 할 수 있 습 니 다. Context. 자바 만 수정 하면 됩 니 다. 이것 은 더 이상 말 하지 않 고 스스로 이해 하 세 요.

    좋은 웹페이지 즐겨찾기