简单工厂模式
目的:
不向客户透露对象实例化细节
通过通用接口创建对象
成员角色:
简单工厂
抽象产品
具体产品
客户测试类
代码示例见Github:https://github.com/Clan-Leisure/model
优点:
工厂类负责与客户端对接,直接给客户端(测试类)提供产品(对象实例),使得对象的创建和使用相分离,有利于功能复用和系统维护
因为客户端无需与具体的产品类打交道,因此可以不知道产品类名,仅需知道具体产品类参数即可,减少使用记忆负担
可以在不修改客户端的情况下对产品进行升级(crud),提高系统灵活性
缺点:
因为所有的创建对象实例都是由工厂类负责的,所以一旦工厂类出现问题,将会导致所有相关客户端都出现问题
一旦添加新的产品类,一定要在工厂类中添加实现,会照成工厂逻辑复杂冗长
应用场景:
工厂产品类较少
客户只知道参数,对于产品实现细节不关心。例如,有个养鱼场,客户想买草鱼,鲤鱼,只需知道“草鱼”和“鲤鱼”这两个词就就可以,而不关心他们是怎么被养大的。
总结:
简单工厂模式中产品类过多就会造成工厂类过于复杂,不符合高内聚原则,因此只适合简单情况使用。