java 装饰者模式

一、概念

我们在使用以前既定的类或者使用别人使用的类的时候,如果该类的方法,不满足你的需求的时候,需要你进行额外附加功能的时候,往往我们想到的方法是继承实现,

但是继承会导致类的越来越庞大,有什么好的方法呢?装饰者模式(也称静态代理)。

就是在不破坏原类的结构的基础上,对现有类附件额外功能。

条件:

        1 )继承同一个类或者实现同一个接口。

         2)装饰者要有被装饰者的引用。

         3)需要增强的方法,对其增强,不需要增强的方法调用原先的方法。

例子:

共同继承的接口:

 1 package com.jd.dec;
 2 
 3 /**
 4  * 1)接口不能实例化。
 5  * 2)接口没有构造方法。
 6  * 3)接口所有的方法都是抽象方法。
 7  * 4)接口没有成员变量只有final和static。
 8  * 5)接口的方法没有方法体。
 9  * 6)接口不是被类继承而是被类实现。
10  * 7)接口可以实现多继承。
11  */
12 public interface Car {
13       void  run();
14       void  stop();
15 }

 被装饰者:

 1 package com.jd.dec;
 2 
 3 public class qq  implements  Car{
 4     public  void run(){
 5         System.out.println("正在行驶");
 6     };
 7     public  void  stop(){
 8         System.out.println("停车");
 9     };
10 
11 }

装饰者:

 1 package com.jd.dec;
 2 
 3 public class binli implements  Car {
 4     private Car car;
 5     public binli(Car car){
 6         this.car=car;
 7     }//对被装饰者的引用,注意这里不写qq而是写的是Car 是指对一类的Car进行增强而不是单单qq。
 8     public  void  run(){
 9         System.out.println("提速200");//需要增强的方法
10     };
11     public  void  stop(){
12         this.car.stop();
13     };
14 }

这样我可以直接调用 新类的binli对象就可以,加强原先的car类的职责。

原文地址:https://www.cnblogs.com/evilliu/p/8515768.html