zoukankan      html  css  js  c++  java
  • 设计模式装饰模式

    类图

     

    源码

    CellPhone.java
    package decoratorPattern;
    
    public abstract  class CellPhone {
        public abstract void receiveCall();
    }
    
    ComplexPhone.java
    package decoratorPattern;
    
    public class ComplexPhone extends PhoneDecorator{
    
        public ComplexPhone(CellPhone phone) {
            super(phone);
        }
        public void receiveCall() {
            super.receiveCall();
            System.out.println("灯光闪烁提示");
        }
    
    }
    
    JarPhone.java
    package decoratorPattern;
    
    public class PhoneDecorator extends CellPhone{
    
        private CellPhone phone=null;
    
         public PhoneDecorator(CellPhone phone) {
             if(phone!=null){
                 this.phone = phone;
             }else{
                 this.phone = new SimplePhone();
             }
         }
        @Override
        public void receiveCall() {
                phone.receiveCall();
        }
    
    }
    
    SimplePhone.java
    package decoratorPattern;
    
    public class SimplePhone  extends CellPhone{
        @Override
        public void receiveCall() {
            System.out.println("声音提示");
        }
    }
    
    PhoneDecorator.java
    package decoratorPattern;
    
    public class PhoneDecorator extends CellPhone{
    
        private CellPhone phone=null;
    
         public PhoneDecorator(CellPhone phone) {
             if(phone!=null){
                 this.phone = phone;
             }else{
                 this.phone = new SimplePhone();
             }
         }
        @Override
        public void receiveCall() {
                phone.receiveCall();
        }
    
    }
    
    Client.java
    package decoratorPattern;
    
    public class Client {
    
        public static void main(String a[]){
            CellPhone p1 = new SimplePhone();
            p1.receiveCall();
            System.out.println();
            CellPhone p2 = new JarPhone(p1);
            p2.receiveCall();
            System.out.println();
            CellPhone p3 = new ComplexPhone(p2);
            p3.receiveCall();
        }
    }

    测试截图

     

     

  • 相关阅读:
    如何提高工作效率,重复利用时间
    好记性不如烂笔头
    如何应对面试中关于“测试框架”的问题
    通宵修复BUG的思考
    工作方法的思考
    别认为那是一件简单的事情
    开发人员需要熟悉缺陷管理办法
    不了解系统功能的思考
    如何布置任务
    事事有回音
  • 原文地址:https://www.cnblogs.com/lx06/p/15688427.html
Copyright © 2011-2022 走看看