1、状态模式
解决问题:能根据内部状态的变化,改变对象 的行为,看起来像修改了类。
实现方法:将每个状态下要执行的共同方法抽象到一个状态接口中,当执行时执行对应状态类的对应方法
2、代理模式
解决问题:为一个对象提供一个对象,以控制对这个对象的访问,被代理的对象可以是远程对象、创建开销大的对象(虚拟代理)或需要安全控制的对象。代理模式有很多变体,都是为了控制与管理对象的访问。
远程代理:创建远程对象的本地代表,通过它可以让远程对象当本地对象使用。远程代理通过网络和真正的远程对象沟通信息。(JavaRMI)
动态代理:运行时动态的创建代理类对象(proxy),并将方法调用转发到指定类(Invokation)。
动态代理实现方法:提供一个接口和该接口的实现供代理类访问控制,执行时创建一个该类的代理类,并对其中的Invokation进行实现以达到对原来类的方法的实现。
3、复合模式
解决问题:各种模式组合在一起,在一个解决方案中用多个模式组合在一起解决某一类问题。
MVC复合模式:view与controller是策略模式;MVC中的各种生命周期为模板模式。Model包含了运行数据和运行逻辑。
4、桥接模式
解决问题:将实现与抽象放在两个不同的类层次中,使两个层次可以独立变化。让接口实现和抽象层可以分别演化,从而提高移植性
实现方法:创建一个抽象类和一个接口,抽象类持有该接口,接口可以有不同实现。子类在继承抽象类时可以针对接口操作并对抽象类做不同的修改与扩展,同时做到了接口实现的类的改变,也在抽象类的子类中进行不同的改变,两个维度都可以改变。
网友评论