- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《软件开发技术》
课
程
作
业
姓名
简单工厂模式 1
一、创建型模式 1
1、创建型模式 1
2、创建型模式关注点 1
二、简单工厂模式概述 1
三、简单工厂模式结构 1
四、简单工厂模式角色 2
五、模式优点 3
六、模式缺点 3
七、实例说明 3
1、实例说明 3
2、实例类图 4
3、实例代码 4
4、结果及分析 4
5、创建对象及使用方法 5
6、实例分析 5
7、将对象的创建与使用分离的其他好处 6
8、何时不需要工厂 6
八、总结 6
简单工厂模式
一、创建型模式
1、创建型模式
创建型模式(Creational Pattern)主要用于创建对象。
②创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对用户隐藏了类的实例的创建细节。
③创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。
2、创建型模式关注点
①创建什么(What) ②由谁创建(Who) ③何时创建(When)
二、简单工厂模式概述
简单工厂模式 (Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
简单工厂模式的定义:
在简单工厂模式中用于创建实例的方法通常是静态(static)方法,因此又被称为静态工厂方法(Static Factory Method)模式。
简单工厂模式的要点:
如果需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无须知道其创建细节。
三、简单工厂模式结构
四、简单工厂模式角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。优点缺点
3、实例代码
(1) Chart:抽象图表接口,充当抽象产品类
(2) HistogramChart:柱状图类,充当具体产品类
(3) PieChart:饼状图类,充当具体产品类
(4) LineChart:折线图类,充当具体产品类
(5) ChartFactory:图表工厂类,充当工厂类
(6) Program:客户端测试类
4、结果及分析
引入配置文件:App.config
……
Chart chart;
chart = ChartFactory.GetChart(histogram); //通过静态工厂方法创建产品
……
using System.Configuration;
……
Chart chart;
//读取配置文件
string chartStr = ConfigurationManager.AppSettings[chartType];
chart = ChartFactory.GetChart(chartStr); //通过静态工厂方法创建产品
……
5、创建对象及使用方法
①使用new关键字直接创建对象
②通过反射机制创建对象
③通过克隆方法创建对象
④通过工厂类创建对象
6、实例分析
①使用new关键字创建对象
②引入工厂类UserDAOFactory
③引入工厂类UserDAOFactory
a 如果UserDAO的某个子类的构造函数发生改变或者需要添加或移除不同的子类,只要维护UserDAOFactory的代码,不会影响到Login。
b 如果UserDAO的接口发生改变,例如添加、移除方法或改变方法名,只需要修改Login,不会给UserDAOFactory带来任何影响。
两个类A和B之间的关系应该仅仅是A创建B或者是A使用B,而不能两种关系都有。将对象的创建和使用分离,使得系统更加符合单一职责原则,有利于对功能的复用和系统的维护。
7、将对象的创建与使用分离的其他好处
①防止用来实例化一个类的数据和代码在多个类中到处都是,可以将有关创建的知识搬移到一个工厂类中,解决代码重复、创建蔓延的问题。
②构造函数的名字都与类名相同,从构造函数和参数列表中大家很难了解不同构造函数所构造的产品的差异 ? 将对象的创建过程封装在工厂类中,可以提供一系列名字完全不同的工厂方法,每一个工厂方法对应一个构造函数,客户端可以以一种更加可读、易懂的方式来创建对象。
8、何时不需要工厂
①无须为系统中的每一个类都配备一个工厂类。
②如果一个类很简单,而且不存在太多变化,其构造过程也很简单,此时就无须为其提供工厂类,直接在使用之前实例化即可。
③否则会导致工厂泛滥,增加系统的复杂度。
例如:string类
八、总结
工厂方法模型中,“工厂”创建的是还没有
您可能关注的文档
最近下载
- 数据通信技术 子网掩码、子网划分、网关 子网掩码与子网划分.ppt VIP
- 柑橘新品种引种表现及栽培技术要点(共字).doc VIP
- 家校社协同育人新范式实施策略.docx
- 美甲店的前景及可行性研究报告.docx
- 班主任计划和总结及班主任手册.doc VIP
- T_CFIAS 3040—2025(混合型饲料添加剂25-羟基胆钙化醇(25-羟基维生素D3)).pdf
- 医疗器械(耗材)项目投标服务实施方案(技术方案).pdf VIP
- 建设工程工程量清单计价规范(GB 50500-2024).docx VIP
- 西门子保护说明书7SJ686用户手册.pdf VIP
- 5.1.3.1生物圈(第一课时) 课件--人教版(2024)生物八年级上册.pptx VIP
原创力文档


文档评论(0)