• 装饰者设计模式


    装饰者设计模式

    装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行为,这个类就叫装饰者类。被修饰的类叫被装饰者类,是已经存在有的功能。在装饰者类之间又可以互相装饰

    特点:
              1.装饰类通过构造方法来接收被装饰者的对象,调用它里面的功能或行为
              2. 基于对被装饰对象的功能进行扩展,提供更强大的功能

    举例:

    假设有一个接口IWaiter(或者父类):

    1 public interface IWaiter {
    2     void service();
    3 }

    具体实现类(或者子类)为Waitress类:

    1 public class Waitress implements IWaiter{
    2 
    3     @Override
    4     public void service() {
    5         // TODO Auto-generated method stub
    6         System.out.println("在服务。。。。");
    7     }
    8     
    9 }

    现在想对Waitress的service方法进行扩展。

    定义一个WaitressWrap类(包装类),实现接口(或者继承父类)IWaiter:

     1 public class WaitressWrap implements IWaiter{
     2     IWaiter waiter=null;
     3     //定义构造方法来接收被装饰者的对象
     4     public WaitressWrap(IWaiter waiter) {
     5         this.waiter=waiter;
     6     }
     7     //重写service方法
     8     @Override
     9     public void service() {
    10         // TODO Auto-generated method stub
    11         System.out.println("微笑");
    12         waiter.service();
    13         
    14     }
    15 }

     

     装饰者设计模式减少了继承体系的臃肿(如果用继承重写的方式,会派生出很多子类),增加了功能,比继承更灵活。装饰类和被装饰类必须所属于同一个体系,通常装饰类都会提供构造函数接收被装饰类对象。

     

  • 相关阅读:
    drf请求生命周期
    正向代理和反向代理
    cbv源码分析
    Python搭建调用本地dll的Windows服务(浏览器可以访问,附测试dll64位和32位文件)
    Python实现聊天机器人接口封装部署
    Python实现机器人语音聊天
    Python爬虫下载美女图片(不同网站不同方法)
    微信小程序-点餐系统
    Win10系统Python3.8的升级与安装
    Python破解Wifi密码思路
  • 原文地址:https://www.cnblogs.com/hopeyes/p/9685734.html
Copyright © 2020-2023  润新知