设计模式
1、原型模式
不通过new关键词来产生一个对象,而是通过对象复制来实现的模式叫做原型模式。
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建心得对象。
Java中使用Cloneable标识clone方法。必须腹泻clone方法,才说明对象可以被拷贝,这里复写的是Object类中的clone方法。
通用代码:
public class PrototypeClass implements Cloneable{ @Override public PrototypeClass clone() { PrototypeClass prototypeClass=null; try{ prototypreClass=(PrototypeClass) super.clone();
catch(CloneNotSupportException e)
{//异常处理
}
return prototypeClass; } } }
注意事项:
Java的浅拷贝和深拷贝问题。Java Object的clone()方法默认是浅拷贝的,指的是:
(1)类的成员变量中可变的引用对象,默认不拷贝;
(2)原始类型、不可变对象拷贝;
(3)String对象比较特殊,通过字符串池在需要的时候才在内存中创建新的字符串。
要想实现深拷贝,必须在复写clone方法中专门写针对成员变量的拷贝。
2、策略模式
定义一组算法,将每个算法封装起来,使他们之间可以互换。
context封装角色。策略模式的封装角色和被封装的策略类不是同一个接口。如果是同一个接口,就成为了代理模式。
封装角色的方法:(1)类中定义策略(私有的策略引用成员);(2)在构造函数中设置具体的策略;(3)在实施中通过多态实现不同的策略;