您的位置:首页 > 编程语言 > Java开发

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

2017-04-18 14:05 330 查看
抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。

每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。

在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。

产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如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 stub
return new EngineA();
}

public Aircondition createAircondition() {
// TODO Auto-generated method stub
return new AirconditionA();
}
}

public class FactoryB implements AbstractFactory{

public Engine createEngine() {
// TODO Auto-generated method stub
return new EngineB();
}

public Aircondition createAircondition() {
// TODO Auto-generated method stub
return 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 工厂模式 设计