码迷,mamicode.com
首页 > 其他好文 > 详细

HeadFirst设计模式---简单工厂

时间:2019-12-03 01:15:01      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:sea   sep   不同的   入参   bak   image   抽象   else   img   

简单工厂的理解

简单工厂不是设计模式的一种,只是代码规范而且。也就是说构造一个披萨工厂出来,按不同味道生产不同的披萨。

类图

技术图片

抽象披萨

public abstract class AbstractPizza {
    public void prepare() {
        System.out.println("prepare pizza");
    }
    public void bake(){
        System.out.println("bake pizza");
    }
    public void cut(){
        System.out.println("cut pizza");
    }
    public void box(){
        System.out.println("pizza box");
    }
}

实体披萨

public class CheeseAbstractPizza extends AbstractPizza {
    @Override
    public void prepare() {
        System.out.println("prepare CheesePizza");
    }
}
public class GreekAbstractPizza extends AbstractPizza {
    @Override
    public void prepare() {
        System.out.println("prepare GreekPizza");
    }
}
public class PepperoniAbstractPizza extends AbstractPizza {
    @Override
    public void prepare() {
        System.out.println("prepare PepperoniPizza");
    }
}

披萨工厂

public class SimpleFactory {

    public AbstractPizza createPizza(String type) {
        if ("cheesePizza".equals(type)) {
            return new CheeseAbstractPizza();
        } else if ("greekPizza".equals(type)) {
            return new GreekAbstractPizza();
        } else if ("pepperoniPizza".equals(type)) {
            return new PepperoniAbstractPizza();
        }
        return null;
    }
}

披萨商店

public class PizzaStore {
    SimpleFactory simplefactory = null;

    PizzaStore(SimpleFactory simplefactory){
        this.simplefactory = simplefactory;
    }

    public void orderPizza(String type) {
        AbstractPizza abstractPizza = simplefactory.createPizza(type);
        abstractPizza.prepare();
        abstractPizza.cut();
        abstractPizza.bake();
        abstractPizza.box();
    }

    public static void main(String[] args) {
        PizzaStore store = new PizzaStore(new SimpleFactory());
        store.orderPizza("cheesePizza");
    }
}

运行结果

prepare CheesePizza
cut pizza
bake pizza
pizza box

总结

  1. 简单工厂代码简单,易理解。
  2. 提供一个入参,可以得到相应的对象
  3. 违背了开闭原则

HeadFirst设计模式---简单工厂

标签:sea   sep   不同的   入参   bak   image   抽象   else   img   

原文地址:https://www.cnblogs.com/Lollipop_Hsu/p/11974157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!