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

    装饰者设计模式

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

    特点:
              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 }

     

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

     

  • 相关阅读:
    Socket通信的理解
    wpf listbox 内的内容显示问题,需要设置里面的itemsPresenter
    C#的两个大方向
    QT的安装和配置及helloqt程序的编写时遇到的问题
    华为交换机基础命令
    华为创建VLAN及VLAN间通讯
    powershell查询AD域账号详细信息
    Powershell从EXCEL导入大量用户
    映射网络驱动器
    域策略更新及导出
  • 原文地址:https://www.cnblogs.com/hopeyes/p/9685734.html
Copyright © 2011-2022 走看看