装饰者设计模式
装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行为,这个类就叫装饰者类。被修饰的类叫被装饰者类,是已经存在有的功能。在装饰者类之间又可以互相装饰
特点:
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 }
装饰者设计模式减少了继承体系的臃肿(如果用继承重写的方式,会派生出很多子类),增加了功能,比继承更灵活。装饰类和被装饰类必须所属于同一个体系,通常装饰类都会提供构造函数接收被装饰类对象。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:装饰者设计模式 - Python技术站