总体来说设计模式分为三大类:
创建型模式5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
代理模式
对象的结构模式。它给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
包含的角色及其职责
①AbstractObject :抽象主题角色,抽象主题类可以是抽象类,也可以是接口,是一个最普通的业务类型定义,无特殊要求。
②RealObject :具体主题角色,也叫被委托角色、被代理角色。是业务逻辑的具体执行者。
③ProxyObject :代理主题角色,也叫委托类、代理类。它把所有抽象主题类定义的方法给具体主题角色实现,并且在具体主题角色处理完毕前后做预处理和善后工作。
Demo
首先,创建一个抽象类
public abstract class AbstractObject {
public abstract void operation(); //操作
}
其次,创建一个目标对象类
public class RealObject extends AbstractObject {
@Override
public void operation() {
System.out.println("一些操作");
}
}
然后,创建代理类
public class ProxyObject extends AbstractObject{
RealObject realObject = new RealObject();
@Override
public void operation() {
//调用目标对象之前可以做相关操作
System.out.println("before");
realObject.operation();
//调用目标对象之后可以做相关操作
System.out.println("after");
}
}
再者,创建测试类
public class Client {
public static void main(String[] args) {
AbstractObject obj = new ProxyObject();
obj.operation();
}
}
最后,查看输出结果
<php>
before
一些操作
after
</php>