博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之工厂方法和抽象工厂
阅读量:5269 次
发布时间:2019-06-14

本文共 891 字,大约阅读时间需要 2 分钟。

简单工厂不是工厂模式,只是一种用法的习惯。

 

工厂方法模式:定义了一个创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。(可以说工厂方法是一个特殊的模板方法)

public abstract class PizzaStore{

  public Pizza orderPizza(String type){

    Pizza pizza;

    pizza=createPizza(type);

    pizza.pareare();

    pizza.bake();

    pizza.cut();

    pizza.box();

 

    return pizza;

  }

  protected abstract Pizza createPizza(Stirng type);       //客户程序中关于超类的代码和子类对象创建代码解耦了

}

 

pizza的种类如果有很多的话,我们将它抽象化,把它设计成一个接口或者是一个抽象的类(使用依赖倒置原则将向下的依赖倒置成向上的依赖,pizza的子类依赖pizza)。

 

遵从OO设计中的指导方针:

  变量不可以持有具体类的引用。

  不要让类派生自具体类。

  不要覆盖基类中已实现的方法。

 

当我们的pizza的工厂需要做的原料不相同该怎么办,那不我们为每种pizza的原料创建一种工厂。

我们可以为工厂定义一个接口,这个接口负责创建所有的原料:

public interface PizzaIngredienFactory{

  public Dough createDough();

  public Sauce createSauce();

  public Cheese createCheese();

  public Veggies[] createVeggies();

}

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

转载于:https://www.cnblogs.com/LvLoveYuForever/p/5799532.html

你可能感兴趣的文章
如何设置映射网络驱动器的具体步骤和方法
查看>>
centos下同时启动多个tomcat
查看>>
Jmeter接口压力测试,Java.net.BindException: Address already in use: connect
查看>>
Leetcode Balanced Binary Tree
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>