个人理解->装饰者模式的目的就是在不改变现有继承的前提下实现对一个类的功能的增加
装饰者模式关键包含: 接口,接口的实现类 ,接口的装饰者,接口装饰者的实现类。
以为一个小例子来理解装饰者模式:
一个接口: public interface ccInter{
public String ccfunction (String str); //一个抽象方法
}
一个接口的实现类:public class ccClass implements ccInter{
public String ccfunction (String str){ //一个具体实现方法
String myStr=str+"123";
return myStr; //我们实现了ccIntent接口重写了ccfunction方法,把str后面加了一个字符串123
}}
一个接口的装饰者:public class ccDecorator implements ccInter{
public ccInter minter;
public ccDecorator (ccInter minter){//构造方法 (可以传入这个接口的实现类,我们就是要对这个实现类做操作)
this.minter=minter;
}
public String ccfunction (String str){ //重写 接口的实现方法
return minter.ccfunction(str); //我们实现了ccIntent,调用minter的实现类的ccfunction方法
}}
一个接口装饰者的实现类:
public class ccClassDecorator extents ccDecorator{
public ccDecorator (ccInter minter){//构造方法 (可以传入这个接口的实现类,我们就是要对这个实现类做操作)
super(minter);
}
public String ccfunction (String str){ //一个具体实现方法
String res=super.ccfunction(str);
res=this.change(res);
return res; //我们实现了ccIntent接口重写了ccfunction方法,把str后面加了一个字符串123
public String change (String str){ //改变方法
res=str+"456";
return res;
}
客户端调用:
String mString ="000";
String resultString="";
ccClass mccc=new ccClass();//继承自接口的类
resultString=mccc.ccfunction(mString);//传入String“000” 返回结果为“000123”
ccClassDecorator deco=new ccClassDecorator(ccClass);
resultString=deco.ccfunction(mString);//传入String“000”返回结果“000123456”