1、概述:工厂模式中一般会分为三种方式。根据创建的类别,我这样分类。(1)创建一类对象的简单工厂和工厂方法;(2)创造多个类别的抽象工厂。
2、作用:增加代码重用性和扩展性,比如说针对不同数据库的实现的时候就可以使用简单工厂模式来达到数据库的分离(解耦),这样在装换数据库时,面对的修改代价将降低
3、对比:三种的方式的抽象级别从简单工厂->工厂方法->抽象工厂依次递增,抽象级别越高,可扩展性越好。当然不是说越抽象越好,因为越抽象就越难理解,代码相对就会变得复杂,所以必须根据实际情况来确定使用的具体模式
4、实现:根据场景我们首先来实现简单工厂模式
场景:现我准备开一个公司(工厂)来开发软件,我准备招一批懂java和csharp语言的人来工作,因为我目前的业务就只需要这两种程序员。于是我的公司开始运营了
public interface Programmer {
void develop();
}
public class JavaProgrammer implements Programmer{
public void develop() {
System.out.println("I am develop java softeware");
}
}
public class CsharpProgrammer implements Programmer {
public void develop() {
System.out.println("I am develop csharp softeware");
}
}
工厂类如下
public class SimpleFactory {
public static Programmer createProgrammer(String type)
{
if(type.equals("java"))
return new JavaProgrammer();
if(type.equals("csharp"))
return new CsharpProgrammer();
return null;
}
}
现在有一个java程序的软件需要开发,测试如下
public static void main(String[] args) {
System.out.println("I want a java programmer");
Programmer p=SimpleFactory.createProgrammer("java");
p.develop();
}
如我的预期所致,这个java程序正在有java程序员火热的进行中,相信不久后就会做完,信心满满的。
过了几天又有一个C#的程序,于是我
public static void main(String[] args) {
System.out.println("I want a csharp programmer");
Programmer p=SimpleFactory.createProgrammer("csharp");
p.develop();
}
嘿嘿,完全没有问题。接下来一个月里陆续接到了关于java和C#的订单,各个程序都忙得焦头烂额的,我自己也疲惫不堪。
突然有一天,有个客户找我谈个业务需要用php来做,可以我公司的所有员工以前都是做java和C#的啊,管他呢,接下来再说,反正工期比较长。
回到公司我问我的员工,现在接了个php的程序问问他们谁做。他们个个都说现在手头的项目都还有几个,对php又不熟,学习也要花时间啊(反应到程序中就是,简单工厂模式面对变化时需要修改原有的代码,这样对于大项目来说是灾难性的)。想想也是,这下可就难倒我了。后悔当初没有找个搞php的,但是想想也不对啊,开发语言那么多,我总不能把所有开发语言的人都一次性招进来吧(程序无法预知所有的情况,简单工厂就是存在找个弊端,开放性原则不好)。
于是我重新规划一下,期待下期的工厂方法来解决找个问题
分享到:
相关推荐
这个是http://blog.csdn.net/dawanganban/article/details/9877593博客中java设计模式的源代码。下载前请先看《设计模式——工厂方法模式》一文。
这个是http://blog.csdn.net/dawanganban/article/details/9884681博客中java设计模式的源代码。下载前请先看《设计模式——工厂模式在开发中的应用》一文。
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
这个是http://blog.csdn.net/dawanganban/article/details/9875873博客中java设计模式的源代码。下载前请先看《设计模式——简单工厂》一文。
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
利用Java进行疫情大数据分析——“Java面向对象程序设计”课程实践教学设计研究.pdf
java设计模式——创建模式、结构模式、行为模式
网易云课堂微专业课程,Java核心设计模式——DAO模式的教学视频
这个http://blog.csdn.net/dawanganban/article/details/9990405博客中java设计模式的源代码。下载前请先看《设计模式——建造者模式》一文。
Java之SSH深入浅出——精简剖析
主要介绍了Java设计模式——工厂设计模式详解,具有一定参考价值,需要的朋友可以了解下。
Java设计模式——观察者模式的两种情况。
《设计模式——基于C#的工程化实践及扩展》相关的源码 ,这是一本讲设计模式的很好的书, 作者有深厚的功底, 从汇编到C++ ,再到C#/Java 等 ,并结合的思想 Martin Fowler的思想 ,对设计模式做了深刻的思考.
java23种设计模式 工厂模式 ,抽象工厂,建造者模式,单态模式,原型模式
浅析Java设计模式【1】——观察者!
浅析Java设计模式【3】——代理.pdf
java毕业设计——陶瓷工厂进销存管理系统的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——陶瓷工厂进销存管理系统的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——陶瓷工厂进销存管理...
简单工厂模式 工厂方法模式 抽象工厂模式 面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):...
是http://blog.csdn.net/lxq_xsyu/article/category/1544127博客中java设计模式的源代码。下载前请先看《设计模式——单例模式》一文。
java模式文档,java模式文档,java模式文档