九、设计模式
88. 说一下你相熟的设计模式?
参考:罕用的设计模式汇总,超具体!
89. 简略工厂和形象工厂有什么区别?
简略工厂模式 :
这个模式自身很简略而且应用在业务较简略的状况下。个别用于小我的项目或者具体产品很少扩大的状况(这样工厂类才不必常常更改)。
它由三种角色组成:
- 工厂类角色:这是本模式的外围,含有肯定的商业逻辑和判断逻辑,依据逻辑不同,产生具体的工厂产品。如例子中的 Driver 类。
- 形象产品角色:它个别是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。如例中的 Car 接口。
- 具体产品角色:工厂类所创立的对象就是此角色的实例。在 java 中由一个具体类实现,如例子中的 Benz、Bmw 类。
来用类图来清晰的示意下的它们之间的关系:
形象工厂模式:
先来意识下什么是产品族:位于不同产品等级构造中,性能相关联的产品组成的家族。
图中的 BmwCar 和 BenzCar 就是两个产品树(产品层次结构);而如图所示的 BenzSportsCar 和 BmwSportsCar 就是一个产品族。他们都能够放到跑车家族中,因而性能有所关联。同理 BmwBussinessCar 和 BenzBusinessCar 也是一个产品族。
能够这么说,它和工厂办法模式的区别就在于须要创建对象的复杂程度上。而且形象工厂模式是三个外面最为形象、最具一般性的。形象工厂模式的用意为:给客户端提供一个接口,能够创立多个产品族中的产品对象。
而且应用形象工厂模式还要满足一下条件:
- 零碎中有多个产品族,而零碎一次只可能生产其中一族产品
- 同属于同一个产品族的产品以其应用。
来看看形象工厂模式的各个角色(和工厂办法的一模一样):
- 形象工厂角色:这是工厂办法模式的外围,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在 java 中它由抽象类或者接口来实现。
- 具体工厂角色:它含有和具体业务逻辑无关的代码。由应用程序调用以创立对应的具体产品的对象。在 java 中它由具体的类来实现。
- 形象产品角色:它是具体产品继承的父类或者是实现的接口。在 java 中个别有抽象类或者接口来实现。
- 具体产品角色:具体工厂角色所创立的对象就是此角色的实例。在 java 中由具体的类来实现。