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

    装饰(Decorator)设计模式

    • 动态的给一个对象添加一些额外的功能,就增加功能这一点来说,装饰模式比生成子类更加的灵活
    • 在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能(这就是装饰设计模式的好处)
    • 装饰设计模式是创建一个包装对象,也就是使用装饰来包裹真实的对象

    应用场景:

    • 需要拓展一个类的功能,或者是给一个类添加附加的职责
    • 当不能采用生成子类来实现时,就比如说是final类

    装饰模式的实现方式:

    • 装饰对象和真实对象有相同的接口
    • 装饰对象包含一个真实对象的引用
    • 装饰对象的所有方法,内部实现都是通过真实对象的引用来调用的,然后实现自己的功能、

     一个小小的例子:

    package null08060056;
    //装饰设计模式的演示
    
    public class Demo01 {
    
        public static void main(String[] args) {
    
            //调用
            Son son = new Son(new Father());
            son.publicCan();
            
        }
    
    }
    //创建一个接口或者是抽象类
    interface Interface{
        public void publicCan();
    }
    final class Father implements Interface{
    
        @Override
        public void publicCan() {
            System.out.println("I can eat");
        }
    }
    //我先在想要定义一个class Son使Son也有Father一样的publicCan,但是不能继承啊,那就只能装饰了
    class Son implements Interface{
        private Father i;
        public Son(Father obj) {
            this.i = obj;
        }
    
        @Override
        public void publicCan() {
            i.publicCan();
            System.out.println("I also can sleep");
        }
        
    }

    未完待续......

  • 相关阅读:
    Servlet学习总结
    Tomcat学习总结1
    第44周星期日反思
    第44周星期一Tomcat学习2
    第44周星期五忙碌文档的一天
    第44周星期六好文章摘录
    laravel 5.6接入微信第三方授权登陆的主要步骤
    laravel多表登录出现路由调用错误
    cURL error 60: SSL certificate problem...
    传说中Python最难理解的点|看这完篇就够了(装饰器)
  • 原文地址:https://www.cnblogs.com/smiling-crying/p/9426426.html
Copyright © 2011-2022 走看看