zoukankan      html  css  js  c++  java
  • 工厂模式之简单工厂模式,head first设计模式

    简单设计模式比较简单,15分钟的时间,跟着我做,十几分钟学会简单设计模式,开始吧:

    1.使用new实例化一个对象时,你肯定知道这种代码缺少弹性,绑定着具体的类会导致代码更加脆弱,简单工厂模式就是针对接口编程,巧妙的设计解决这个问题。

    Pizza pizza =new CheesePizza();

    2,直接上一个简单工厂模式代码,然后分析。你可以拷贝自己建立以下四个类

     Pizza类:披萨类

    package com.example.demo.factory;
    
    import java.util.ArrayList;
    
    public abstract class Pizza {
        /**
         * 名称
         */
        String name;
        /**
         * 面团类型
         */
        String dough;
        /**
         * 酱料
         */
        String sauce;
        /**
         * 作料
         */
        ArrayList<String> toppings = new ArrayList<String>();
    
        void prepare() {
            System.out.println("准备 " + name);
            System.out.println("揉面团...");
            System.out.println("添加酱料...");
            System.out.println("添加作料: ");
            for (int i = 0; i < toppings.size(); i++) {
                System.out.println("   " + toppings.get(i));
            }
        }
    
        void bake() {
            System.out.println("烘烤25分钟");
        }
    
        void cut() {
            System.out.println("把Pizza对角切片");
        }
    
        void box() {
            System.out.println("把Pizza装盒子");
        }
    
        public String getName() {
            return name;
        }
    
    }

    简单披萨工厂类:SimplePizzaFactory,根据需求创建不同的披萨

    package com.example.demo.factory;
    
    import org.apache.commons.codec.binary.StringUtils;
    
    public class SimplePizzaFactory {
        public Pizza createPizza(String type) {
            Pizza pizza = null;
            if (StringUtils.equals(type,"cheese")) {
                pizza = new CheesePizza();
            } else if (StringUtils.equals(type,"veggie")) {
                pizza = new VeggiePizza();
            }
            return pizza;
        }
    }

    披萨店类:PizzaStore,生成披萨

    package com.example.demo.factory;
    public  class PizzaStore {
           private final SimplePizzaFactory factory;
            public PizzaStore(SimplePizzaFactory factory) {
                this.factory = factory;
            }
            public Pizza orderPizza(String type) {
                Pizza pizza;
                pizza = factory.createPizza(type);
                pizza.prepare();
                pizza.bake();
                pizza.cut();
                pizza.box();
                return pizza;
            }
    }

    main启动类:

    package com.example.demo;
    
    import com.example.demo.factory.Pizza;
    import com.example.demo.factory.PizzaStore;
    import com.example.demo.factory.SimplePizzaFactory;
    
    public class PizzaApplication {
    
        public static void main(String[] args) {
            SimplePizzaFactory factory = new SimplePizzaFactory();
            PizzaStore store = new PizzaStore(factory);
    
            Pizza pizza = store.orderPizza("cheese");
            System.out.println("We ordered a " + pizza.getName() + "
    ");
    
            pizza = store.orderPizza("veggie");
            System.out.println("We ordered a " + pizza.getName() + "
    ");
        }
    }

    将这四个类考入到你的eclipse或者idea运行,恐怕不要过多解释你就能看懂其中的巧妙之处,其实简单工厂不是一个设计模式,反而更像一种编程习惯;

    运行结果:

    好了到这我想你拷贝代码大概用了5分钟,接下来十分钟自己分析调用逻辑流程比较好,别人说永远说不清楚,逻辑较为简单,梳理一下就好了,就不详细讲解,相信你可以做到的,在这仅提供一份资源和信念;

    代码是我自己运行没问题拷贝过来的,如有问题没法运行或者需要详细讲解的请留言,定当回复一起探讨!谢谢!

  • 相关阅读:
    Matlab-9:中心差分方法解常微分算例(SOR完整版)
    Matlab-8:松弛迭代法(SOR)
    Matlab-6:解非线性方程组newton迭代法
    Matlab-5:牛顿迭代法工具箱
    javascript学习笔记--经典继承、组合继承、原型式继承、寄生继承以及寄生组合继承
    爬取微信文章代码
    吴恩达“机器学习”——学习笔记八
    吴恩达“机器学习”——学习笔记七
    吴恩达“机器学习”——学习笔记六
    吴恩达“机器学习”——学习笔记五
  • 原文地址:https://www.cnblogs.com/ljw-bim/p/9141413.html
Copyright © 2011-2022 走看看