ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> 4Factory Pattern(工厂模式)

4Factory Pattern(工厂模式)(1/9)

来源:网络整理     时间:2017-12-08     关键词:

本篇文章主要介绍了" 4Factory Pattern(工厂模式)",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下: 工厂模式(Factory Pattern)定义:  定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。针对实现编程,但...

工厂模式(Factory Pattern)定义:

  定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

针对实现编程,但是当我们每次使用new时候,不正是在针对实现编程吗?是的,当使用“new”时,你的确实在实例化一个具体类,所以用的确实是实现,而不是接口。代码绑定这具体类会导致代码更脆弱,更缺乏弹性。

  Duck duck                          =                           new GreenDuck();

  使用接口让代码具有弹性                                 但还是得建立具体类的实例

  但我们总是要用new来创建对象吧。是的,在技术上,new没有错,毕竟这是Java基础部分。真正的犯人是我们的老朋友 “改变”,以及它是如何影响new的使用的。

看下面的代码:

 4Factory Pattern(工厂模式) 4Factory Pattern(工厂模式)

 1/*当有一群相关的具体类时,通常会写出这样的代码*/ 2Duck duck;
 3 4if(picnic){
 5     duck = new GreenDuck();
 6 }elseif(hunting){
 7     duck = new DecoyDuck();
 8 }elseif(inBathTub){
 9     duck = new RubberDuck();
10 }...//还有更多的实现类,在运行程序时,要通过判断,来确定创建哪个对象
View Code

针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。如果代码是针对接口编程而写,那么通过多态,它可以与任何新类实现该接口。但是,当代码使用大量的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须改变代码。也就是说,你的代码并非 “对修改关闭”。想用新的具体类型来扩展代码,必须重新打开它。所以,遇到问题时候,就应该回到OO设计原则去寻找线索。别忘了,我们的第一个原则用来处理改变,并帮助我们 “找出会变化的方面,把它们从不变的部分分离出来”

举例:

  有一家比萨店,定制比萨的方法如下:

相关图片

相关文章