装饰模式(添加行为)
一、 定义:通过组合,装饰者模式动态的将责任添加到对象上,从而扩展对象的行为功能。
a) 装饰者和被装饰对象都有相同的超类型,所以在需要被装饰者对象的场合都可以使用装饰者对象代替
b) 装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,从而达到特定的目的(实现行为的添加)
c) 对象可以在任何时候被修饰,可以在运行时动态的,不限量的被任意个装饰者装饰
a) 组件
Interface Component{
void func1(){};
void func2(){};
}
Public class ConreteComponent extends Component{
void func1(){};
void func2(){};
}
Public class Decorator extends Component{
Component comp;
Public Decorator(Component comp){
This.comp=comp;
}
//需要添加的行为方法
void funcAdd(){};
}
Component comp= new Decorator(new ConreteComponent());
五、 装饰者模式实例:java IO类
适配器模式(将一个接口转换为另一个接口)
一、 定义:适配器模式将一个类的接口,转换为期望的另一个接口。使得原来接口不兼容的的类可以合作无间。
二、 概述:通过让一个适配器包装一个被适配者,将一个接口转换为另一个接口
a) 目标接口
interface Target(){
void func1();
void func2();
}
public class Adapter implements Target(){
private Adaptee ad;//持有被适配对象的引用
public Adapter (Adaptee ad){
this.ad=ad;
}
void func1(){
ad.fun(); //由被适配对象调用自己的方法实现该方法
}
void func1(){
ad.fun(); //由被适配对象调用自己的方法实现该方法
}
}
public class Adaptee (){
void fun(){}
}
五、 类适配器、对象适配器
a) 类适配器: 通过多继承实现,java不支持多继承
b) 对象适配器:通过组合实现,以上为对象适配器