Head First-设计模式-简单工厂模式

简单工厂模式:其实不是一个设计模式,是一种编程习惯,就是把创建对象的代码挪到了另一个类里。


写个简单一点的实例:就是有个pizza工厂,我订什么披萨,你就给我生产什么pizza
类图:
这里写图片描述
1.先定义pizza类 具有订pizza功能

class Pizza {
    private SimpleFactory factory;
    public Pizza(){//这个无参是为了子类不用也得写个有参构造

    }
    public Pizza(SimpleFactory factory){//创建对象时拿到工厂对象
        this.factory = factory;
    }
    public void orderPizza(String type){//订pizza
         factory.createPizza(type);
    }
}

2.再来定义几个具体类型pizza

class PandaPizza extends Pizza{
    public PandaPizza(){
        System.out.println("welcome to order pandaPizza ,here you are.");
    }
}
class KongfuPizza extends Pizza{
    public KongfuPizza(){
        System.out.println("welcome to order kongfuPizza ,here you are..");
    }
}

3.现在来定义pizza工厂

class  SimpleFactory{
    Pizza pizza;
    public Pizza createPizza(String type){//根据不同类型创建对象
        if(type.equals("panda")){
            pizza =  new PandaPizza();
        }else if(type.equals("kongfu")){
            pizza = new KongfuPizza();
        }else pizza = null;
        return pizza;
    }
}

4.简单调试、来订pizza吧

public class Test{
    public static void main(String args[]{
    SimpleFactory factory = new SimpleFactory();
        Pizza pizza  = new Pizza(factory);
        pizza.orderPizza("panda");
        pizza.orderPizza("kongfu");
        pizza.orderPizza("gaga");
    }
}

运行结果:
welcome to order pandaPizza ,here you are.
welcome to order kongfuPizza ,here you are..


一目了然,就是把创建对象的代码拿到SimpleFactory类里了,使得以后再有pizza类型的变化时不用修改pizza类,达到pizza类与创建对象解耦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值