`
tgwiloveyou
  • 浏览: 9428 次
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

白话设计模式_工厂模式之简单工厂

阅读更多

         工厂模式,应该是应用最为广泛、最为重要的设计模式,它里面包括三种:简单工厂(不包括在23种经典的模式中)、工厂方法模式以及抽象工厂模式,由前往后抽象程度越来越高。

 

        先介绍下简单工厂。

 

         编码过程中,我们新手经常会写这样的代码:

//other code...
//输出设备
OutPut output = null;
if(name.equals("print")){
        //打印机
        output = new Print();
}else if(name.equals("monitor")){
        //显示器
        output = new Monitor();
}
//other code ...

         这种写法本身并没有什么语法错误,毕竟这是java语法基础的一部分,但问题在于可扩展性很不好,如果系统要添加一种输出设备并且上面这段代码在你系统多个类中存在,那么每个地方都需要修改,不仅麻烦而且容易出错。问题出在:系统主要业务逻辑中不需要知道你具体对象时如何初始化的,它只是使用该对象,该对象的初始化信息应该另外封装起来,这就是面向对象的封装。

 

         我们可以将上面这段代码封装到一个单独的类中(即是工厂类),然后任何时候需要的时候直接告诉这个工厂类来取得一个产品即可。这样当需要扩展输出设备时,即使我们在很多地方调用了工厂类也没关系,我只需要修改这个封装好的工厂类即可。

 

        简单工厂:

public interface OutPut {}
public class Print implements OutPut {}
public class Monitor implements OutPut {}

public class SimpleFactory {
	public static OutPut createOutput(String name){
		OutPut output = null;
		if(name.equals("print")){
			output = new Print();
		}else if(name.equals("monitor")){
			output = new Monitor();
		}
		return output;
	}
}

          当我们要消费“产品”的时候,直接告诉简单工厂我们需要一个产品,当然同时得告诉工厂类你需要的产品的名字:

OutPut output;		
output = SimpleFactory.createOutput("print");

 

         简单工厂很简单,但有不足之处,这也是为什么我们需要工厂方法模式的原因。

 

         下一篇:工厂方法模式

 

分享到:
评论

相关推荐

    白话java23设计模式

    设计模式(Design pattern)是一套被反复使用、...本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!

    白话设计模式通俗易懂

    非常好的设计模式介绍资料,通俗易懂,适用于编程人员参考。采用了大量图片介绍系统的展示了编程当中常用的各种模式设计

    白话说电气_相电压和线电压的分析

    白话说电气_相电压和线电压的分析 白话说明 比较容易理解

    白话说电气_电机制动的几种常见方式.pdf

    白话说电气_电机制动的几种常见方式.pdf

    深入浅出设计模式中文版【13章、附录】

    深入浅出设计模式 pdf 深入浅出设计模式 中文版 设计模式 下载说明: 因个人上传资源大小只能是20M,而该书的PDF格式过大,所以只能分开上传。如有不便请谅解。【该书一共13章,在上传的时候我尽量按章节顺序打包...

    抽象工厂模式(Abstract Factory Pattern)

    我写的也非常简单易懂,相信看过的朋友们都应该对简单工厂模式、工厂方法模式的意图、所能解决的问题及适用情景有一定的了解了。但是若要达到灵活运用,什么时候用,怎样用合适还不是看一篇文章就能解决的问题。呵呵...

    白话讲解创建型设计模式:单例原型构建

    写在前面 分享一些设计模式的笔记。陆续整理,按照设计模式类型,创建型,结构型,行为型发布 博文会用通俗的话梳理一些自己的理解,结合开发中的实际场景, 理解不足小伙伴帮忙指正,虚心接受 ^_^ 傍晚时分

    经典设计模式讲解以及项目实战(Java版)

    为了更系统的学习设计模式,特地开了这样一个基于Java的设计模式【集中营】,都是笔者在实际工作中用到过或者学习过的一些设计模式的一些提炼或者总检。慢慢地初见规模,也有几个朋友给我点鼓励,给了star。本文工程...

    设计模式总结.docx

    1、设计模式的一些总结思考, 2、用白话总结了设计模式的精要, 3、帮助大家理解记忆一些常用的设计模式。

    《设计模式与游戏完美开发》java demo.zip

    java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...

    策略模式 template模式

    设计模式中的策略模式,template模式详细讲解。

    白话中台战略-中台是个什么鬼.pdf

    白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-中台是个什么鬼.pdf白话中台战略-...

    java课程设计作业-模仿大富翁游戏,使用Java Swing (GUI) 实现的单机游戏,遵循MVC设计模式

    java课程设计作业——模仿大富翁游戏,使用Java Swing (GUI) 实现的单机游戏,遵循MVC设计模式 A Java Swing (GUI) game. 单机版的大富翁游戏,纯Java实现,采用MVC设计模式。 所有素材来自 大富翁客户端+冒险岛...

    白话c++.pdf

    白话c++.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

    深入浅出设计模式9~12章

    作者Eric Freeman 和Elisabeth Freeman,使用白话文的形式在讨论中介绍23中设计模式,有异与原《设计模式》更加通俗易懂。通过实际事例来讲解每一个设计模式,生动有趣,不会感觉到枯燥。

    白话C#之第一话 初学C的看看吧

    白话C#之第一话 白话C#之第一话 初学C的看看吧

    深入浅出设计模式中文版13章

    作者Eric Freeman 和Elisabeth Freeman,使用白话文的形式在讨论中介绍23中设计模式,有异与原《设计模式》更加通俗易懂。通过实际事例来讲解每一个设计模式,生动有趣,不会感觉到枯燥。

    深入浅出设计模式

    这本书作者Eric Freeman 和Elisabeth Freeman使用白话文的方式,清楚的介绍了全部23种设计模式。简洁易懂。共13章节。此为封面、目录

    设计模式附录

    作者Eric Freeman 和Elisabeth Freeman,使用白话文的形式在讨论中介绍23中设计模式,有异与原《设计模式》更加通俗易懂。通过实际事例来讲解每一个设计模式,生动有趣,不会感觉到枯燥。

    白话windows编程.rar

    白话windows编程.rar

Global site tag (gtag.js) - Google Analytics