您的位置:首页 > 移动开发 > Android开发

Android开发 设计模式 (三、Abstract Factory(抽象工厂模式))

2015-11-15 16:16 513 查看

三、Abstract Factory(抽象工厂模式)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

现在接着制造宝马车,随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。工厂有两个系列的产品:空调和发动机。宝马X5系列配置A型号空调和A型号发动机,宝马X6系列配置B型号空调和B型号发动机。

产品类:

// BMW.java

public abstract class BMW {

publicBMW(){

}

}

// BMWX5.java

public class BMWX5 extends BMW {

publicBMWX5() {

System.out.println("制造一辆宝马X5");

}

}

// BMWX6.java

public class BMWX6 extends BMW{

publicBMWX6(){

System.out.println("制造一辆宝马X6");

}

}

// Engine.java

public abstract class Engine {}

// EngineA.java

public class EngineA extendsEngine{

public EngineA(){

System.out.println("制造一台发动机A");

}

}

// EngineB.java

public class EngineB extendsEngine{

public EngineB(){

System.out.println("制造一台发动机B");

}

}

// Aircondition.java

public abstract classAircondition {}

// AirconditionA.java

public class AirconditionAextends Aircondition{

public AirconditionA(){

System.out.println("制造一台空调A");

}

}

// AirconditionB.java

public class AirconditionBextends Aircondition{

public AirconditionB(){

System.out.println("制造一台空调B");

}

}

工厂类:

// FactoryBMW.java

public interface FactoryBMW {

BMWcreateBMW_A();

BMWcreateBMW_B();

AirconditioncreateaAirconditionA();

AirconditioncreateaAirconditionB();

}

// FactoryBWMX5.java

//宝马X5系列:生产配置A,B两种空调型号的X5汽车

public class FactoryBWMX5implements FactoryBMW{

publicBMWX5 createBMW_A() {

createaAirconditionA();

returnnew BMWX5();

}

publicBMWX5 createBMW_B() {

createaAirconditionB();

returnnew BMWX5();

}

publicAircondition createaAirconditionA() {

returnnew AirconditionA();

}

publicAircondition createaAirconditionB() {

returnnew AirconditionB();

}

}

// FactoryBWMX6.java

//宝马X6系列,生产配置A,B两种空调型号的X6汽车

public class FactoryBWMX6implements FactoryBMW {

publicBMWX6 createBMW_A() {

createaAirconditionA();

returnnew BMWX6();

}

publicBMWX6 createBMW_B() {

createaAirconditionB();

returnnew BMWX6();

}

publicAircondition createaAirconditionA() {

returnnew AirconditionA();

}

publicAircondition createaAirconditionB() {

returnnew AirconditionB();

}

}

客户类:

// Customer.java

public class Customer {

publicstatic void main(String[] args){

//想要A型空调宝马X5

FactoryBWMX5factoryBWMX5_A = new FactoryBWMX5();

BMWX5x5_A = factoryBWMX5_A.createBMW_A();

//想要B型空调宝马X5

FactoryBWMX5factoryBWMX5_B = new FactoryBWMX5();

BMWX5x5_B = factoryBWMX5_B.createBMW_B();

//想要A型空调宝马X6

FactoryBWMX6factoryBWMX6_A = new FactoryBWMX6();

BMWX6x6_A = factoryBWMX6_A.createBMW_A();

//想要B型空调宝马X6

FactoryBWMX6factoryBWMX6_B = new FactoryBWMX6();

BMWX6x6_B = factoryBWMX6_B.createBMW_B();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: