抽象工厂模式

来源:互联网 发布:unity3d cg动画 编辑:程序博客网 时间:2024/06/05 01:23

抽象工厂模式

一、概念

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建

 型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能

 按照工厂模式提供对象



抽象工厂是简单工厂的再一次针对于工厂的抽象,其过程为在简单工厂上添加了一层获取工厂,让后通过工厂获取产品。
一个工厂生产一个系列的产品(为了方便单个工厂具体只生产一个系列),一个系列的产品拥有着大部分的共性,想要生产
多个系列的产品就需要多个工厂,那么就需要抽象工厂了,工厂的共性就是生产产品(简单理解)。例如海尔集团下有生产
冰箱、洗衣机,空调等。各自有自己的工厂,单个工厂只负责生产冰箱、洗衣机或空调。海尔集团为了管理这些工厂及自己
旗下的不同的系列的产品,就抽象出一个工厂规则来管理所有的工场,这个规则就是超级工厂的实现及抽象的工厂。
就是产品有产品的是抽象,工厂有工厂的抽象,通过工厂的抽象来生产产品。如上,海尔集团有一个部门管理工厂,工
厂管理自己的产品,当想要生产一台冰箱时过程如下 集团 —>  工厂管理部门—>工厂—>产品。


代码只是贴出AbstractFactory以及FactoryProductor

public interface AbstractFactory<T> {

abstract T getFactory(inttype);

}

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

public class ShapeFactory implements AbstractFactory<Shape>{

/**

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

* */

@Override

public Shape getFactory(inttype) {

Shape shape =null;

switch (type) {

case 0:

shape = new Circle();

break;

case 1:

shape = new Rectangle();

break;

case 2:

shape = new Triangle();

break;

}

returnshape;

}

}

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


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

publicclass FactoryProductor {

/**

* @param type 0:ColorFactory 1:ShapeFactory

* */

public AbstractFactory getFactory(int type){

AbstractFactoryfactory = null;

switch (type) {

case 0:

factory =new ColorFactory();

break;

case 1:

factory =new ShapeFactory();

break;

}

returnfactory;

}

}





原创粉丝点击