装饰者模式

作者: Stephenwish | 来源:发表于2020-07-23 21:11 被阅读0次

    装饰者本质是JAVA继承的一种变种,可以理解为加强的extends


    第一步,写个抽象类和继承类
    public abstract class MySource {
        abstract void operate();
    }
    
    
    public class MySourceImpl extends  MySource{
        @Override
        void operate() {
            System.err.println("我是具体实现类");
        }
    }
    
    第二步,再来一个继承类,不过是没有实现的,里面要放最开始抽象父类这个属性,通过构造注入留个后门装载上面正真的实现类
    public abstract class MyOtherSource extends  MySource{
        private MySource mySource=null;
    
        public MyOtherSource(MySource mySource) {
            this.mySource = mySource;
        }
    
        @Override
        void operate() {
            mySource.operate();
        }
    
        //新增几个原始父类没有的方法,再具体的子类实现它
        abstract void stop();
    }
    
    第三步,实现上面步骤的实例
    public class XOtherSourceImpl extends  MyOtherSource{
    
        public XOtherSourceImpl(MySource mySource) {
            super(mySource);
        }
    
        @Override
        void stop() {
            System.err.println("X实现方法");
        }
    }
    
    public class YOtherSourceImpl extends MyOtherSource{
        public YOtherSourceImpl(MySource mySource) {
            super(mySource);
        }
    
        @Override
        void stop() {
            System.err.println("Y实现方法");
        }
    }
    
    场景实用类检测
    public class Client {
        public static void main(String[] args) {
            MySource mySource = new MySourceImpl();
            MyOtherSource otherSource = new XOtherSourceImpl(mySource);
            otherSource.stop();//相当于在MySourceImpl 里面加了stop 扩展一样
            otherSource.operate();
        }
    }
    

    相关文章

      网友评论

        本文标题:装饰者模式

        本文链接:https://www.haomeiwen.com/subject/ochklktx.html