• 工厂模式


    第四个模式:工厂模式

    4.1写在前面:定义简单工厂模式

    简单工厂不是一个设计模式,反而比较像是一种编程习惯。

    wpsB163.tmp

    wpsEBC5.tmp

    看看如何根据订单生产这些披萨的:

    1.先看看Ethan的订单:我们首先需要一个纽约披萨店:

       PizzaStore nypizzastore = new NYPizzaStore();

    2.现在有了一个店,可以下单了:

       nyPizzaStore.orderPizza(“cheese”);

    3.orderPizza()方法于是调用了createPizza()方法:

      Pizza pizza = createPizza(“cheese”);

    4.最后,披萨必须经过下列的处理才算完成orderPizza():

    pizza.prepare();

    pizza.bake();

    pizza.cut();

    pizza.box();

    同时,我们要注意要创建披萨本身!!

    4.2工厂方法模式

    工厂方法模式:通过让子类决定创建的对象是什么,来达到将对象创建的过程封装的目的。

    如下图所示,是工厂方法模式的类图:

    wps8D04.tmp

     

    如果不采用工厂方法模式,对与这个披萨店问题,就会产生很多的具体类依赖!!这是不正确的习惯。。

    设计原则:要依赖抽象,不要依赖具体类。

    下面的知道方针,能帮你避免在OO设计中违反依赖倒置原则:

    1.变量不可以持用具体累的引用

    2.不能让类派生自具体类

    3.不要覆盖基类中已经实现的方法

    具体如下:

    wpsF6D.tmp

    wps4C10.tmp

    1.首先我们需要一个纽约披萨店:

    wpsA8FF.tmp

    2.现在有了披萨点,就可以接受订单了:

    wpsFFC7.tmp

     

    3.orderPizza()方法首先调用createPizza()方法:

    wpsC92E.tmp

    4.当createPizza()方法被调用时,就涉及到原料工厂了:

    wps2D2F.tmp

    5.接下来需要准备Pizza,一旦调用了prepare()方法,工厂将被要求准备原料:

    wpsF1A7.tmp

    6.最后我们得到了准备好的Pizza,orderPizza()就会接着烘烤,切片,装盒。

    现在引入工厂方法模式:

    工厂方法模式:提供了一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类

    如下图是工厂方法模式的类图:

    wps6004.tmp

  • 相关阅读:
    linux下安装tomcat
    linux 中安装mysql8.0
    国家助学贷款
    语句摘录
    Java 今天是否为节假日
    Jfinal框架登陆页面的图形验证码
    ActiveRecord初始化,可以实现jfinal系统启动完成后,再建立数据库连接
    socket 通讯
    datatable的excel导入,其中有关于datatables的很多参数设置
    jfinal form表单提交文件
  • 原文地址:https://www.cnblogs.com/maverick-fu/p/4503624.html
Copyright © 2020-2023  润新知