原型模式
使用场景:
一个对象比较构建比较高资源,如果经常使用者对象,可以使用原型模式,效率高。
代码实现:
public class Persion implements Cloneable, Serializable {
private static final long serialVersionUID = 6505120655521795211L;
/**
* 淺克隆.
*/
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
/**
* 深克隆.
* @return
*/
public Object deepClone() {
try(ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis)){
oos.writeObject(this);
return ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
适配器模式
使用场景:如果一个接口不是外部调用者所需要的,那么可以使用适配器模式,适配成调用者需要的接口。
代码实现:
public interface IDGetter{
String getId();
}
public interface IDGetterAdapter{
Integer getId();
}
public class MyIDGetterAdapter implements IDGetterAdapter{
IDGetter idGetter;
public Integer getId(){
return Integer.value(idGetter.getId());
}
}
桥接模式
使用场景:系统有多个类型实现,并且可能会变化 ,将使用者和实现者隔离开,通过桥梁这个角色的对象进行联系。
实现代码:
public interface Driver{
Connection conect(...);
}
public MqsqlDriver implements Driver{
Connection conect(...){
...
}
}
public OracleDriver implements Driver{
Connection conect(...){
...
}
}
public class DriverBridge{
//可以维护一个Driver的容器
static Connection getConnect(){
//从容器中获取对应的driver
driver.connect(...);
}
}