- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
www.ChinaSA.info www.ChinaSA.info Design Patterns 简单工厂模式 刘 伟 (Sunny) weiliu_china@126.com 大纲 创建型模式 简单工厂模式概述 简单工厂模式的结构与实现 简单工厂模式的应用实例 创建对象与使用对象 简单工厂模式的简化 简单工厂模式的优缺点与适用环境 创建型模式 创建型模式(Creational Pattern)关注对象的创建过程 创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对用户隐藏了类的实例的创建细节 创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展 创建型模式 创建型模式关注点 创建什么(What) 由谁创建(Who) 何时创建(When) 创建对象 使用对象 创建型模式 创建型模式一览表 模式名称 定 义 学习难度 使用频率 简单工厂模式 (Simple Factory Pattern) 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。 ★★☆☆☆ ★★★☆☆ 工厂方法模式 (Factory Method Pattern) 定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。 ★★☆☆☆ ★★★★★ 抽象工厂模式 (Abstract Factory Pattern) 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 ★★★★☆ ★★★★★ 建造者模式 (Builder Pattern) 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 ★★★★☆ ★★☆☆☆ 原型模式 (Prototype Pattern) 使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 ★★★☆☆ ★★★☆☆ 单例模式 (Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。 ★☆☆☆☆ ★★★★☆ 简单工厂模式概述 简单工厂模式示意图 客户端 工厂 产品 参数 简单工厂模式概述 简单工厂模式基本实现流程 具体产品类:将需要创建的各种不同产品对象的相关代码封装到具体产品类中 抽象产品类:将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中 工厂类:提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入参数的不同创建不同的具体产品对象 客户端:只需调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象 简单工厂模式概述 简单工厂模式的定义 类创建型模式 简单工厂模式 (Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。 简单工厂模式概述 简单工厂模式的定义 在简单工厂模式中用于创建实例的方法通常是静态(static)方法,因此又被称为静态工厂方法(Static Factory Method)模式 要点:如果需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无须知道其创建细节 简单工厂模式的结构与实现 简单工厂模式的结构 简单工厂模式的结构与实现 简单工厂模式的结构 简单工厂模式包含以下3个角色: Factory(工厂角色) Product(抽象产品角色) ConcreteProduct(具体产品角色) 简单工厂模式的结构与实现 简单工厂模式的实现 典型的抽象产品类代码: abstract class Product { //所有产品类的公共业务方法 public void MethodSame() { //公共方法的实现 } //声明抽象业务方法 public abstract void MethodDiff(); } 简单工厂模式的结构与实现 简单工厂模式的实现 典型的具体产品类代码: class ConcreteProductA : Product { //实现业务方法 public override void MethodDiff() { //业务方法的实现 } } 简单工厂模式的结构与实现 简单工厂模式的实现 典型的工厂类代码: class Factory { //静态工厂方法 public static Product GetProduct(string arg) { Product product = null; if (arg.Equals(A
文档评论(0)