按照设计模式,我们对一个类进行增加,在不改动原有类的基础上进行增加,对修改关闭,对扩展开放(开闭原则)。
-
类的继承
进行类的增强,传统方法是类的继承,在继承类中进行原有类的增强,但是我们不建议超过2层的继承关系,如果一个类在N次迭代中都需要增加,那就会有N个继承类,这样会使系统过于臃肿。
-
代理增强
代理模式,代理类和被代理类均需实现同一个接口,在代理类中增强被代理类的方法。
-
装饰者模式
装饰者模式,和代理模式比较相似,其实就是代理模式的变形。
代理复现:
//组件接口
interface IComponent{
void fun();
}
//组件实例
class ComponentImpl implements IComponent{
@Override
public void fun() {
System.out.println("原始消息");
}
}
//抽象包装类
abstract class abWrapper implements IComponent{
protected IComponent com;
//注入被增加组件
public abWrapper(IComponent com) {
this.com = com;
}
}
//包装者一
class OneWrapper extends abWrapper{
public OneWrapper(IComponent com) {
super(com);
}
@Override
public void fun() {
System.out.println("one增加");
super.com.fun();
}
}
//包装者二
class TwoWrapper extends abWrapper{
public TwoWrapper(IComponent com) {
super(com);
}
@Override
public void fun() {
System.out.println("two增加");
super.com.fun();
}
}
public class B {
public static void main(String[] args) {
//将com组件经过两次包装
IComponent com= new ComponentImpl();
IComponentone = new OneWrapper(com);
IComponenttwo = new TwoWrapper(one);
two.fun();
}
}
测试结果:
two增加
one增加
原始消息