为什麼建网站要先做数据库,上海网站建设外包公司,河北高阳做网站的,wordpress主动提交百度介绍
抽象工厂模式基于工厂方法模式引入了“产品族”的概念#xff0c;即我们认为具体产品是固定的#xff0c;具体产品存在等级之分#xff0c;比如我们常说的手机#xff0c;有“青春版”#xff0c;“至尊版”#xff0c;“至臻版”。一个产品有多个版本族。这时候即我们认为具体产品是固定的具体产品存在等级之分比如我们常说的手机有“青春版”“至尊版”“至臻版”。一个产品有多个版本族。这时候我们假设产品是固定的用户只需要选择对应的产品族即可。 增加了族的概念类似于同一个产品有等级之分产品。一个具体工厂专门负责生产一个固定等级的不同产品。 抽象工厂模式是工厂方法模式的扩展增加了产品族的概念一个产品可以有多个族虽然是不同族但是都属于一个产品类似于生活中的同一款类型的产品下面有各种等级的族可以供消费者选择 增加产品族在这里是容易的但是增加产品线就比较麻烦因为增加产品线我们需要重新定义工厂接口了因为原来的工厂接口方法已经固定增加新产品线的接口方法。 三种工厂模式的对比
简单工厂模式
简单工厂模式的工厂类一般是使用静态方法通过接收参数的不同来返回不同具体产品对象的实例。不修改代码就无法扩展产品。
用于返回几个可能类中的一个类的实例这些类的实例一般具有了共同的父类和公共的方法。
可以是在多个产品中选择。 工厂方法模式
比较推荐使用是对简单工厂模式进行抽象和推广而来克服了简单工厂模式的缺点添加产品会需要修改工厂类使用工厂方法模式添加新的产品只需要添加新的具体工厂类即可。
工厂方法模式是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中支持增加任意产品通过增加具体的工厂类去实现。
一个具体工厂只创建一类产品。
抽象工厂模式
抽象工厂模式是应对产品族的概念的。例如每个汽车公司都会同时生产轿车货车客车那么每一个工厂都要有创建轿车货车客车的方法而轿车货车客车这三个是比较大的概念在他们之下有具体的产品族比如轿车有各种车系类型的这就对应的产品族的概念。
这里就是一个工厂可以负责创建多个产品增加新的产品线很简单但是增加新的产品比较麻烦因为工厂接口已经耦合了旧的产品。
因此使用抽象工厂模式时一定要保证其中的产品族一定不会再新增即可以枚举完成的就可以使用抽象工厂模式。