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. 违背了开闭原则
  • 相关阅读:
    利用performSelectorInBackground和performSelectorOnMainThread实现多线程刷新UI
    iOS之NSCocoaErrorDomain Code=3840
    iOS之原生地图与高德地图
    iOS之Storyboard References
    iOS之内购
    iOS之上线被拒
    iOS之可拖拽重排的CollectionView
    iOS之内购
    ios专题
    ios专题
  • 原文地址:https://www.cnblogs.com/Lollipop_Hsu/p/11974157.html
Copyright © 2011-2022 走看看