简单工厂定义及本质
定义:提供一个创建对象实例的功能,而无须关心具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。
本质:选择合适的实现类。
结构示意图:
UML类图
调用时序图
优缺点
关于接口:
(1)接口定义:接口是一种特殊的抽象类,接口所有方法都是抽象方法,所有属性都是常量,没有任何方法实现。
(2)接口作用:接口用来定义实现类的外观,即实现类的行为定义,用来约束实现类的行为。
(3)接口思想:“封装隔离”,“接口是系统可插拔的保证”。
(4)接口与抽象类的选择:应优先选用接口;即要定义子类的行为,又要为子类提供公共功能时应选用抽象类。
工厂是跟接口与实现类在一起的,它处于封装体内部,与知道实现类没有关系。
工厂模式优点:
(1)封装隔离
封装:指“对被隔离体的行为封装”或“对被隔离体的职责的封装”;
隔离:指外部调用和内部实现,即外部调用只能通过接口进行调用,而不需知道内部具体实现;
(2)解耦
实现了客户端和具体实现类的解耦。客户端通过工厂获取所需要的接口对象。
工厂模式缺点:
(1)增加客户端的复杂度:客户端需要知道工厂所提供的参数代表的具体功能和含义;
(2)不便于扩展子工厂:工厂类私有化了构造方法,只通过静态方法创建接口,不能再通过写子类改变接口的方法行为。