为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

简单工厂模式

2017-09-21 2页 doc 13KB 19阅读

用户头像

is_037433

暂无简介

举报
简单工厂模式简单工厂模式 设计模式之 简单工厂模式 Simple Factory Pattern 虞鹏 意图 专门定义一个类来负责创建其他类的实例, 被创建的实例通常都具有共同 的父类. (Simple Factory)模式又称为静态工厂方法 (Static Factory Method)模式,属 于类的创建 型模式,通常他根据自变量的不同返回不同 类的实例. 简单工厂模式实质是由一个工厂类根据传 入的参量,动态的决定应该创建出哪一 个产 品类的实例. 简单工厂模式实际上不属于23个GOF模式, 但他可以作为工厂 方法模式(Fact...
简单工厂模式
简单工厂模式 设计模式之 简单工厂模式 Simple Factory Pattern 虞鹏 意图 专门定义一个类来负责创建其他类的实例, 被创建的实例通常都具有共同 的父类. (Simple Factory)模式又称为静态工厂方法 (Static Factory Method)模式,属 于类的创建 型模式,通常他根据自变量的不同返回不同 类的实例. 简单工厂模式实质是由一个工厂类根据传 入的参量,动态的决定应该创建出哪一 个产 品类的实例. 简单工厂模式实际上不属于23个GOF模式, 但他可以作为工厂 方法模式(Factory Method)的一个引导. 工厂角色:是简单工厂的核心,他负责实现创 建所有实例内部逻辑.工厂类可以被外界直 接调用,创建所需的产品对象 抽象产品角色:是简单工厂模式所创建的所 有对象父类,他负责描述所有实例所共有的 公共接口 具体产品角色:是简单工厂模式的创建目标, 所有创建的对象都是充当这个角色的某个 具体类的实例. 抽象产品角色 interface IFruit { void disp(); } 具体产品角色 class 苹果 : IFruit { public void disp() { Console.WriteLine("苹果"); } } class 橘子 : IFruit { public void disp() { Console.WriteLine("橘子"); } } class 葡萄 : IFruit { public void disp() { Console.WriteLine("葡萄"); } } 工厂角色 class Factory { public static IFruit Create(string type) { switch(type) { case "苹果": return new 苹果(); case "橘子": return new 橘子(); case "葡萄": return new 葡萄(); default: return null; } } } class Program { static void Main(string[] args) { IFruit p = Factory.Create("苹果"); p.disp(); } } 优点 工厂类是整个模式的关键.包含了必要的逻 辑判断,根据外界给定的信息,决定究竟应该 创建哪个具体类的对象.通过使用工厂类,外 界可以从直接创建具体产品对象的尴尬局 面摆脱出来,仅仅需要负责"消费"对象就 可以了.而不必管这些对象究竟如何创建 及如何组织的.明确了各自的职责和权利, 有利于整个软件体系结构的优化. 缺点 由于工厂类集中了所有实例的创建逻辑,违反了 高内聚责任分配原则,将全部创建逻辑集中到了 一个工厂类中. 当系统中的具体产品类不断增多时候,可能会出 现要求工厂类根据不同条件创建不同实例的需 求.这种对条件的判断和对具体产品类型的判断 交错在一起,很难避免模块功能的蔓延,对系统 的维护和扩展非常不利 这些缺点在工厂方法模式中得到了一定的克服 适用情景 工厂类负责创建的对象比较少 客户只知道传入工厂类的参数,对于如 何 创建对象(逻辑)不关心 由于简单工厂很容易违反高内聚责任分配 原则,因此一 般只在很简单的情况下应用 en logSend" data-logsend='{"send":["view","share",{"subType":"bigIcon","sns":"renren","copyright":"1","readerVersion":"3"}]}'>嵌入播放器:普通尺寸(450*500pix)较大尺寸(630*500pix) 预览复制
/
本文档为【简单工厂模式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索