Java 디자인 모드장식자 모드

2555 단어

콘셉트


4
  • 원본 파일을 바꾸지 않고 계승을 사용하지 않는 상황에서 동태적으로 책임을 대상에 부가하여 동태적으로 확대하는 기능을 실현한다.그것은 포장의 대상, 즉 장식을 통해 진실을 감싸는 대상이다

  • 설계 원칙


    4
  • 장식자 모델을 사용하려면 다음과 같은 디자인 원칙을 충족시켜야 한다* 다용도 조합, 소용도 계승*개방폐쇄 원칙: 클래스는 확장과 개방, 수정에 대해 폐쇄해야 한다

  • 다음은 햄버거를 예로 들어보겠습니다.
    public interface Hanbeger {
        // 
        public float price();
        // 
        public String name();
    
    }
    
    // 
    public class GoldHanbeger implements Hanbeger{
    
        @Override
        public float price() {
           return 10;
        }
    
        @Override
        public String name() {
            
            return " ";
        }
       
    }
    
    
    public abstract class peicai implements Hanbeger{
        
         private Hanbeger hanbeger;
         
         
         public peicai(Hanbeger h){
             this.hanbeger = h;
             
         }
          @Override
        public String name() {
            
            return this.hanbeger.name();
        }
         @Override
        public float price() {
            
            return this.hanbeger.price();
        }
    }
    
    public class Shengcai extends peicai{
    
        public Shengcai(Hanbeger h) {
            super(h);
            
        }
        @Override
        public float price() {
            
            return super.price()+5;
        }
        @Override
        public String name() {
            
            return super.name()+" ";
        }
    
    }
    
    // 
    public class Beff extends peicai {
    
        public Beff(Hanbeger h) {
            super(h);
            
        }
        @Override
        public String name() {
            
            return super.name()+" ";
        }
        @Override
        public float price() {
            
            return super.price()+20;
        }
        
      
    }
    
    public class Text {
       public static void main(String[] args) {
        GoldHanbeger gold = new GoldHanbeger();
        System.out.println(gold.name()+" " + gold.price());
        // 
        Beff beff = new Beff(gold);
        System.out.println(beff.name()+" " + beff.price());
        
        // 
        Shengcai shencai = new Shengcai(beff);
        System.out.println(shencai.name() + " " + shencai.price());
    }
    }
    
    

    나는 이런 모델에 대해 이렇게 이해한다. 이것은 마치 요리를 하는 것과 같다. 나는 먼저 무엇을 해야 하는지, 대체적인 방향을 정해야 한다. 햄버거의 예에서 나는 내가 원하는 것이 햄버거라는 것을 먼저 확정했다. 그러면 햄버거 인터페이스를 정의해야 한다. 이것은 기본이기 때문이다.그러면 햄버거에는 닭다리버거, 장어버거, 황금버거 같은 종류가 많아요. 여기서 저는 황금버거를 골랐어요.물론 황금버거는 햄버거의 인터페이스를 실현하는 종류다.가장 기본적인 햄버거가 생긴 후에 우리는 약간의 반찬을 넣어야 한다. 반찬은 하나의 종류이다. 그러면 반찬도 상추, 소고기, 와사비 등 여러 종류가 있는데 구체적인 반찬을 쓸 때 반찬류를 계승해야 한다. 왜냐하면 이것들은 모두 반찬에 속하기 때문이다.마지막은 테스트 클래스입니다. 다음은 실행 결과입니다.
    황금만두 가격

    좋은 웹페이지 즐겨찾기