工厂模式
普通工厂
简单工厂模式的主要角色如下:
简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。
具体产品(ConcreteProduct):是简单工厂模式的创建目标。
简单工厂核心类目就是工厂类,,工厂类根据不同标识,创建不同产品实例。。。。
工厂方法
简单工厂也有它的弊端。。比如我要增加产品。。那必须修改工厂类。。增加判断逻辑。。 所以出现了工厂方法模式(抽象产品只能生产一种产品,此弊端可使用抽象工厂模式解决。)
这样的情况下。我不需要知道具体产品。。只需要知道工厂。。就能生产对应的产品。。。。
工厂方法模式的主要角色如下。
抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。
抽象工厂
工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。
实际就是扩展了原有的实际工厂类,增加了产生不同产品的方法
几大工厂模式,说不上来哪个好哪个坏,只是应用不同的场景下哪个更加的合适才对。。。理解下这种模式的思想吧。。