淘先锋技术网

首页 1 2 3 4 5 6 7

按照设计模式,我们对一个类进行增加,在不改动原有类的基础上进行增加,对修改关闭,对扩展开放(开闭原则)。

  • 类的继承

进行类的增强,传统方法是类的继承,在继承类中进行原有类的增强,但是我们不建议超过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增加
原始消息