设计模式—工厂方法
1.何为工厂方法
定义一个用来创建对象的接口,让子类来决定实例化哪一个类。工厂方法将一个类的实例化延迟到子类。
2.工厂方法的意义和使用场景
工厂方法隔离了类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的类型,紧耦合(new)会导致软件脆弱。它体现了单一责任原则和开闭原则。
工厂模式解决“单个对象”的需求变化,缺点在于要求创建方法/参数相同。
3.工厂方法的实现
工厂方法使用一个工厂基类来定义一个创建对象的接口,需要创建具体对象时,去实现具体的对象创建工厂来创建对象。这样,每当有新的类出现时,只需要去实现新的工厂就行了(开闭原则,对修改封闭,对拓展开放)。
1 | //分割器抽象类(稳定) |
4.工厂方法的其他作用
1.可以在创建对象的时候加入对参数的验证,当参数不满足条件时拒绝创建对象
2.可以在工厂中创建一个vector,来跟踪记录已经创建好的对象。
5.抽象工厂
抽象工厂是提供一个接口,把一系列相关的、相互依赖的对象的创建交给工厂来做,而无需指定具体的类。
如一个数据库对象需要连接、命令、数据结果三个对象,使用一个工厂将相匹配的三个对象一起创建。这样即实现了解耦,又避免了用工厂方法一个一个创建对象可能造成的不匹配问题。(如创建了mysql连接,却又创建了redis命令来搭配使用),抽象工厂将这三个对象的创建封装在一起,保证了正确性。