Java设计模式--抽象工厂模式

来源:互联网 发布:流程优化岗面试题 编辑:程序博客网 时间:2024/05/16 06:43
抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。
每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。
在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。

产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的CPU和ADM芯片的主板,组成一个家族。Intel的CPU和Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成,示意图如下:

下面以一个代码来说明抽象工厂模式:

1.抽象工厂:

package abstractfactory;public interface AbstractFactory {public Engine createEngine();public Aircondition createAircondition();}
2.具体工厂

package abstractfactory;public class FactoryA implements AbstractFactory {public Engine createEngine() {// TODO Auto-generated method stubreturn new EngineA();}public Aircondition createAircondition() {// TODO Auto-generated method stubreturn new AirconditionA();}}public class FactoryB implements AbstractFactory{public Engine createEngine() {// TODO Auto-generated method stubreturn new EngineB();}public Aircondition createAircondition() {// TODO Auto-generated method stubreturn new AirconditionB();}}

3.抽象产品

package abstractfactory;public interface Engine {}public interface Aircondition {}

4.具体产品

package abstractfactory;public class EngineA implements Engine {public EngineA(){System.out.println("生产-->EngineA");}}public class EngineB implements Engine {public EngineB(){System.out.println("生产-->EngineB");}}public class AirconditionA implements Aircondition {public AirconditionA(){System.out.println("生产-->AriconditonA");}}public class AirconditionB implements Aircondition{public AirconditionB(){System.out.println("生产-->AirconditionB");}}

5.测试类

package abstractfactory;public class Test {public static void main(String[] args) {Engine e  = new FactoryA().createEngine();Aircondition a = new FactoryA().createAircondition();Engine e1 = new FactoryB().createEngine();Aircondition a1 = new FactoryB().createAircondition();}}

6.测试结果:

生产-->EngineA
生产-->AriconditonA
生产-->EngineB
生产-->AirconditionB

0 0
原创粉丝点击