Java 设计模式中有一个叫做工厂方法的设计模式。那么什么叫工厂方法呢?
【我们的烦恼】
我们平时写程序的时候,经常会对同一个抽象类的子类或同一个接口的多个子实现进行选择,这时候我们就需要知道类的继承关系以及每个子类具体实现,每个子类的功能。例如:一个日志记录类Logger有两个子类FileLogger、ConsoleLogger。分别是面向文件和面向控制台的日志类。我们编写程序的时候会根据需要选择其中之一来对Logger的对象进行实例化。
可能一:Logger log=new FileLogger()
可能二:Logger log=new ConsoleLogger()
我们除了清楚类的继承关系及每个类的应用范围歪,还需要判断当前的应用环境,例如到底是应该使用文件日志记录方式呢,还是控制台日志显示方式。
【工厂方法】
为了解决上面的烦恼,提出了工厂方法的模式。
工厂方法就是为了解决对类的对象实例化时对子类的选择的烦恼。
它是这样实现的,用一个属性文件(如logger.properties)来决定当前日志记录的环境选择。例如,我们可以将logger.properties的文件内容设置如下:
Filelogging=on
这表示,当前的日志记录到文件中。我们需要使用文件日志类来实例化Logger对象log。
我们声明一个名为LoggerFactory的类,该类应该有一个名为getLogger()的方法,它检查当前Filelogging的属性,然后调用不同的实现类实例化一个对象,并以Logger类型返回。
这样,我们在使用的时候,只需要如此简单地就可以得到响应的日志记录类了。如下:
Logger log=new LoggerFactory().getLogger();
【我的看法】
我觉得工厂方法并非如其所说的那么完美。虽然在直接使用的时候我们免去了判断当前环境的烦恼,但是我们却需要在属性文件里面进行属性的设置。虽然在使用时我们免去了对类继承关系的了解,但是在工厂类的设计的时候,了解类结构是免不了的。所以我认为:工厂方法使得使用傻瓜化,但是增加了工厂类设计的麻烦。不是吗?
分享到:
- 2008-09-22 17:15
- 浏览 1432
- 评论(2)
- 论坛回复 / 浏览 (2 / 1834)
- 查看更多
相关推荐
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
java设计模式之工厂方法模式 学习设计模式已经有一段时间了,但经常还是会很困惑。看书上的代码会发现很多不同的设计模式的代码结构非常相似。比如 Bridge 和 Strategy 。。。 设计模式就是我们设计过程中经常出现的...
Java设计模式之工厂模式 Java设计模式之工厂模式
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
Java设计模式05工厂方法模式
设计模式之工厂模式Java实现和类设计图,包括简单工厂模式、工厂方法模式和抽象工厂模式
例题简单的阐述了Java工厂模式的概念,有利于读者更好地了解Java工厂模式
Java实现的工厂模式,抽象工厂,工厂方法模式
Java设计模式,工厂方法的Demo,具体的思想有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
这个是http://blog.csdn.net/dawanganban/article/details/9877593博客中java设计模式的源代码。下载前请先看《设计模式——工厂方法模式》一文。
工厂方法模式和简单工厂模式在结构上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而...
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
摘要 :设计模式是面 向对 象的软件设计与 实现的关键技 术 ,如何根 据设计要...厂方法模 式是程序设计 中被广泛使 用的设计模式之一。本文重点介绍,使用工厂方法模式的一般原则,同时结合具体的实例来描述它的应用。
Java设计模式之工厂模式实现,供大家一起共同分享学习。
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...
java设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种完整免费提供).pdfjava设计模式之工厂模式(3种...
java设计模式之抽象工厂模式实例,希望对大家有所帮助。
Java设计模式中的工厂模式,MainDemo.java 是项目演示入口
JAVA设计模式之工厂模式.pdf