抽象工厂模式

抽象工厂模式

一、概念

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象

     抽象工厂是简单工厂的再一次针对于工厂的抽象,其过程为在简单工厂上添加了一层获取工厂,让后通过工厂获取产品。

一个工厂生产一个系列的产品(为了方便单个工厂具体只生产一个系列),一个系列的产品拥有着大部分的共性,想要生产

多个系列的产品就需要多个工厂,那么就需要抽象工厂了,工厂的共性就是生产产品(简单理解)。例如海尔集团下有生产

冰箱、洗衣机,空调等。各自有自己的工厂,单个工厂只负责生产冰箱、洗衣机或空调。海尔集团为了管理这些工厂及自己

旗下的不同的系列的产品,就抽象出一个工厂规则来管理所有的工场,这个规则就是超级工厂的实现及抽象的工厂。

就是产品有产品的是抽象,工厂有工厂的抽象,通过工厂的抽象来生产产品。如上,海尔集团有一个部门管理工厂,工

厂管理自己的产品,当想要生产一台冰箱时过程如下 集团 —>  工厂管理部门—>工厂—>产品。

 

 

代码只是贴出AbstractFactory以及FactoryProductor

public interface AbstractFactory<T> {

abstract T getFactory(int type);

}

所有的工场实现了该类。T为实现了本类工厂类产品的抽象类。如ShapFactory的泛型为Shape.

 

public class ShapeFactory implements AbstractFactory<Shape>{

/**

* @param type 0:Circle 1:Rectangle 2:Triangle

* */

@Override

public Shape getFactory(int type) {

Shape shape = null;

switch (type) {

case 0:

shape = new Circle();

break;

case 1:

shape = new Rectangle();

break;

case 2:

shape = new Triangle();

break;

}

return shape;

}

 

}

上面的类就是Shape的工厂类具体实现

下方为工厂生产类,用来生产工厂及用来实例化工厂,提供医用给外界

public class FactoryProductor {

/**

* @param type 0:ColorFactory 1:ShapeFactory

* */

public AbstractFactory getFactory(int type){

AbstractFactory factory = null;

switch (type) {

case 0:

factory = new ColorFactory();

break;

case 1:

factory = new ShapeFactory();

break;

 

}

return factory;

}

}

 

对于工厂进行抽象,不同的产品使用不同的抽象,这样每一次新加一个新的产品就需要添加两个类,一个是工厂,一个是产品。由使用产品的地方来判断创建工厂的逻辑。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值