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

Java设计模式--工厂方法模式

2017-11-06 20:20 423 查看

角色

抽象工厂:担任这个角色是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类都必须实现这个接口。

具体工厂:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用来创建产品对象。

抽象产品:工厂方法模式所创建对象的超类型,也就是产品对象的共同父类或接口。

具体产品:这个角色实现了抽象产品接口。

结构图



抽象工厂:

package com.design.factorymethod;

public interface Factory {

Product createProduct();
}


抽象产品:

package com.design.factorymethod;

public interface Product {

void productInfo();
}


具体产品:

package com.design.factorymethod;

public class ProductA implements Product {
@Override
public void productInfo() {
System.out.println("Product A");
}
}


package com.design.factorymethod;

public class ProductB implements Product {
@Override
public void productInfo() {
System.out.println("Product B");
}
}


具体工厂:

package com.design.factorymethod;

public class FactoryA implements Factory {
@Override
public Product createProduct() {
return new ProductA();
}
}


package com.design.factorymethod;

public class FactoryB implements Factory {
@Override
public Product createProduct() {
return new ProductB();
}
}


测试:

package com.design.factorymethod;

public class Client {

private static Factory factoryA, factoryB;
private static Product productA, productB;
public static void main(String[] args){
factoryA = new FactoryA();
factoryB = new FactoryB();
productA = factoryA.createProduct();
productB = factoryB.createProduct();
productA.productInfo();
productB.productInfo();
}
}


输出:



工厂方法模式和简单工厂模式的区别:工厂方法模式的核心是一个抽象工厂类,而简单工厂模式的核心是一个具体类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: