上一节说到单例模式:https://blog.csdn.net/zhanglei082319/article/details/88370309
单例模式: 保证一个类有且仅有一个实例,并且提供一个访问它的全局访问点。
今天我们说说一种新的设计模式类型:组合类型之适配器模式
还是从手机生产工厂这个案例说起,我们知道手机的零件有很多,比如液晶屏、 触摸屏、 机壳、 保护膜、 电池、螺丝等等。这么多零件都需要生产,或者代理生产。如果有一天在生产苹果手机的过程中,突然发现苹果手机螺丝零件没了,机器坏了,但是工厂不可能因为螺丝没了就停止生产,那么怎么办呢。
最简单的办法:使用其他手机的螺丝零件,但是其他手机的螺丝零件并不能直接使用。
这里就需要使用到适配器模式。
代码如下:
/**
* 苹果生产工厂
*/
public class IPhoneFactoryAdaptor extends IPhoneFactory{
//华为生产工厂
private HuaWeiFactory huaWeiScrew;
//vivo生产工厂
private VivoFactory vivoScrew;
/**
* 生产苹果手机螺丝
*/
public Screw getIPhoneScrew(){
//先从自己工厂中生产
Screw iphoneScrew = super.getIPhoneScrew();
//如果生产失败,没有库存了
if(iphoneScrew == null){
//从华为工厂中拿
iphoneScrew = huaWeiScrew.getHuaWeiScrew();
if(iphoneScrew == null){
//从vivo工厂中拿
iphoneScrew = vivoScrew.getVivoScrew();
}
}
return iphoneScrew;
}
}
当前的适配器模式,是一种对象类型的适配器模式,也是俗称的组合类型。适配器模式又3中实现方式,继承方式,组合方式,接口实现方式,个人比较推荐组合方式。
这里以工厂级别为例,苹果手机工厂在生产螺丝时,发现代理商无法按时发货,或者自己无法生产。获取不到螺丝的情况下,会从华为工厂中去拿,再没有从vivo工厂中去拿,最后适配成自己的螺丝,进行返回。