文档章节

Professional Java EE Design Pattherns(java EE设计模式解析与应用)阅后总结

L
 LeoHuang55
发布于 2017/04/08 11:15
字数 500
阅读 17
收藏 0

工厂模式目的:为了创建对象,创建对象的逻辑封装在工厂类中,使客户端与创建对象分割开,客户端不需要考虑接口或类的不同实现,只需要通过工厂(工厂方法或者抽象工厂)获取接口实现的一个实例即可。

这样的好处是重构的改变只会对一个点影响。

通常情况下,工厂本身会被实现为单例或者是静态类,因为一般来说只需要一个工厂实例即可,这么做将会是工厂对象的创建集中到一个地方,有利于更好地对代码的修改和更新,并减少错误。

工厂模式有两种模式:

    一个是工厂方法:提供一个方法返回一个新创建的对象。

    另外一个是抽象工厂:将创建对象委托给子类实现。

工厂方法:GoF一书是这样描述工厂方法模式的:“定义一个用于创建对象的接口,不过让其子类决定实例化哪个类”。Head First Design Patterns补充了一点:“工厂方法将类的实例化推迟到子类”。

使用普通代码实现工厂方法:

DrinkMachine.class

/**
 * 抽象类
 * @author Administrator
 *抽象工厂模式,将对象的创建委托给子类
 */
public abstract class DrinkMachine {
	//抽象方法 给子类创建对象
	public abstract Drink dispenseDrink();
	public String displayMessage()
	{
		return "Thank you for your custom.";
	}
}

CoffeeMachine.class

/**
 * 工厂类
 * @author Administrator
 *工厂方法模式:提供一个方法来返回新创建的对象
 */
public class CoffeeMachine extends DrinkMachine{

	@Override
	public Drink dispenseDrink() {
		// TODO Auto-generated method stub
		return new Coffee();
	}

}

SoftDrinkMachine.class

/**
 * 工厂方法模式:提供一个方法来返回新创建的对象
 * @author Administrator
 *
 */
public class SoftDrinksMachine extends DrinkMachine
{

	@Override
	public Drink dispenseDrink() {
		// TODO Auto-generated method stub
		return new SoftDrink();
	}
		
}

Drink接口

public interface Drink {}

Coffee.class

public class Coffee implements Drink {

}

SoftDrink.class

public class SoftDrink implements Drink 
{
	
}

 

© 著作权归作者所有

L
粉丝 0
博文 3
码字总数 2325
作品 0
广州
私信 提问
广州电子商务公司招聘java开发工程师

JAVA开发工程师(工资5000-8000) 工作职责: 负责公司产品系列的研发升级与其他项目的实施开发。 职位要求: 1、专科及以上学历,精通Web编程,熟练Java语言进行web开发,1年以上Java EE W...

一點也不乖
2011/12/05
750
2
20个设计模式和软件设计面试问题

不管是参加Java面试还是C#面试,设计模式和软件设计都是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎...

LCZ777
2014/08/13
0
0
python 与设计模式 ——工厂与单例

python 与设计模式 源码地址:[http://git.oschina.net/duoduo3_69/python_design_pattern][1] git checkout v001(这个版本与此篇博客相符) zarkpy里面运用了很多设计模式,以前一直很费解p...

duoduo3_69
2013/11/27
0
0
java中23种设计模式(上)

参考网址:http://blog.csdn.net/zhangerqing 资源:http://download.csdn.net/detail/zhangerqing/4835830 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用、多数...

青涩的梦
2018/06/26
0
0
Java之美[从菜鸟到高手演变]之设计模式

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代...

只想一个人静一静
2014/02/25
0
2

没有更多内容

加载失败,请刷新页面

加载更多

阿里云安全中心:自动化安全闭环实现全方位默认安全防护

随着数字化转型的深入发展,企业云上资产越来越多元化,随之而来的是安全威胁的复杂化,企业需要花费大量精力进行告警分析、威胁检测、病毒查杀等工作。Gartner曾指出,随着安全警报的复杂性...

迷你芊宝宝
20分钟前
1
0
好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM

好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCSS、 SMACSS、 BEM、这3个词。“如果还不...

好程序员IT
23分钟前
2
0
Gradle的安装和在idea的配置

下载gradle 下载地址:http://services.gradle.org/distributions/ 。我下载的是 gradle-5.4-bin.zip。然后解压到G:\gradle-5.4 配置环境变量。 有3个环境变量: GRADLE_HOME 等于gradle的安...

王坤charlie
24分钟前
1
0
聊聊分布式事务,再说说解决方案

前言 最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务...

群星纪元
26分钟前
2
0
分布式项目(6)consul注册中心

lelinked
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部