zoukankan      html  css  js  c++  java
  • HeadFirst设计模式---简单工厂

    简单工厂的理解

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

    类图

    抽象披萨

    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. 违背了开闭原则
  • 相关阅读:
    扩展当easyui datagrid无数据时,显示特定值。如:没有数据
    draggable datagrid columns
    easyui combobox 带 checkbox
    LightOJ1003---Drunk(拓扑排序判环)
    算法分析---回文数推断
    Android集成百度地图SDK
    BS一机双屏的解决方式
    myeclipse中更改web项目在tomcat中部署的路径
    Linux内核调试技术——jprobe使用与实现
    【Servlet】把文件写到Respond输出流里面供用户下载
  • 原文地址:https://www.cnblogs.com/Lollipop_Hsu/p/11974157.html
Copyright © 2011-2022 走看看