设计模式学习与实践(五)----工厂方法模式(factory method)

1.1.1        描述

l         正规描述

核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。

l         形象描述

MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说要一个汉堡,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。

1.1.2        类图&示意代码

public abstract class Product(){

    public abstract void productMethod();

}

 

public class ConcreteProduct1 extends Product(){

public void productMethod(){

    System.out.println(“This is concreteProduct1”);

}

}

 

public class ConcreteProduct2 extends Product(){

public void productMethod(){

    System.out.println(“This is concreteProduct2”);

}

}

 

public abstract class Factory(){

    public abstract Product create();

}

 

public class ConcreteFactory1 extends Factory(){

public Product create(){

   return new ConcreteProduct1();

}

}

 

public class ConcreteFactory2 extends Factory(){

public Product create(){

   return new ConcreteProduct2();

}

}

 

public class Client(){

    public void main(String args[]){

        Factory f1 = new ConcreteFactory1();

        Product p1 = f1.create();

        p1.productMethod();

        Factory f2 = new ConcreteFactory2();

        Product p2 = f2.create();

        p2.productMethod();

    }

}

注:

1、  工厂类分为抽象工厂类和实体工厂类

2、  产品类分为抽象产品类和实体产品类

3、  不同的实体工厂类创建不同的实体产品

1.1.3        举例

1.1.4        比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值