工厂方法模式课件

上传人:鲁** 文档编号:591184181 上传时间:2024-09-16 格式:PPT 页数:24 大小:242KB
返回 下载 相关 举报
工厂方法模式课件_第1页
第1页 / 共24页
工厂方法模式课件_第2页
第2页 / 共24页
工厂方法模式课件_第3页
第3页 / 共24页
工厂方法模式课件_第4页
第4页 / 共24页
工厂方法模式课件_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《工厂方法模式课件》由会员分享,可在线阅读,更多相关《工厂方法模式课件(24页珍藏版)》请在金锄头文库上搜索。

1、工厂方法模式(Factory Method)主讲人:海燕工厂方法模式工厂方法模式讲课思路简单介绍一下简单工厂模式和工厂方法模式的定义通过计算器和雷锋工厂两个实例进一步学习这两个模式简单工厂VS工厂方法工厂方法模式工厂方法模式简单工厂模式简单工厂模式(Simple Factory)定义:又称为定义:又称为静态工厂方法(静态工厂方法(Static Factory Method)模式)模式,它属于类创建型模式。,它属于类创建型模式。 在简单工厂模式中,可以在简单工厂模式中,可以根据自变量的不根据自变量的不同返回不同类的实例同返回不同类的实例。简单工厂模式专门。简单工厂模式专门定义一个类来负责创建其他

2、类的实例,定义一个类来负责创建其他类的实例,被被创建的实例通常都具有共同的父类创建的实例通常都具有共同的父类。工厂方法模式工厂方法模式水果农场只要说出水果的名字就能得到想到的水果。动机(Motivation):AppleOrangeBananaCreateCreatecreate工厂方法模式工厂方法模式用简单工厂模式实现计算器UML类图简单工厂类简单工厂类+createOperate():运算类运算类运算类+NumberA:double+NumberB:double+GetResult():double除法类除法类+GetResult():double减法类减法类+GetResult():do

3、uble乘法类乘法类+GetResult():double加法类加法类+GetResult():double类第一行:类名称第二行:类的特性(字段或属性)第三行:类的操作(方法或行为)+表示public,-表示private,#表示ptotected依赖关系若类名称为斜体字,则此类为抽象类继承关系工厂方法模式工厂方法模式知识点串讲属性为了更好地访问”类”中的成员变量。C#提供了属性。所谓“更好”指的是更加安全、清楚等。保护好私有变量的隐蔽性等。私有变量不能被外界访问表示外界可以给内部的name赋值表示外界调用时可以得到name的值工厂方法模式工厂方法模式继承和多态:virtualoverrid

4、e继承从语义上讲就是Is-a关系例如:“猫”类继承了“动物”类,语义上的意思就是,猫是一种动物猫就是子类,动物就是父类猫为派生类,动物为基类工厂方法模式工厂方法模式虚拟的,表示此方法是虚方法,可以被子类重写成员变量成员方法继承,表示Dog类继承了Animal类非Private的所有特征方法重写,表示覆盖父类中相应的成员方法工厂方法模式工厂方法模式工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 _设计模式GoF工厂方法模式工厂方法模式定义:工厂方法模式又称为工厂模式,也叫虚拟构造器(Virtual Cons

5、tructor)模式或者多态工厂(Polymorphic Factory)模式,它属于对象创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生产具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。工厂方法模式工厂方法模式工厂方法模式(工厂方法模式(Factory Method)结构图)结构图ProductCreator+FactoryMethod()ConcreteProductConcreteCreator+FactoryMethod()声明工厂方法,该方法返回一个Product类型的

6、对象定义工厂方法所创建的对象的借口具体的产品,实现了Product借口重定义工厂方法以返回一个ConcreteProduct 实例工厂方法模式工厂方法模式接口:看似是:声明了一个类,而且类的成员都具有“行为”注意:1.接口用interface声明,不用class2.接口名称前要加I3.没有成员变量4.成员方法前面不能有修饰符5.方法没有方法体错误的例子:工厂方法模式工厂方法模式工厂方法模式UML类图工厂类+CreatOperation():运算类乘法工厂减法类+GetResult():double加法工厂减法工厂运算类+NumberA:double+NumberB:double+GetResu

7、lt():double加法类+GetResult():double乘法类+GetResult():double除法类+GetResult():double除法工厂工厂方法模式工厂方法模式简单工厂模式UML类图简单工厂类简单工厂类+createOperate():运算类运算类运算类+NumberA:double+NumberB:double+GetResult():double除法类除法类+GetResult():double减法类减法类+GetResult():double乘法类乘法类+GetResult():double加法类加法类+GetResult():double工厂方法模式工厂方法模

8、式简单工厂模式UML类图简单工厂类简单工厂类+createOperate():运算类运算类运算类+NumberA:double+NumberB:double+GetResult():double除法类除法类+GetResult():double减法类减法类+GetResult():double乘法类乘法类+GetResult():double加法类加法类+GetResult():double工厂方法模式工厂方法模式工厂方法模式UML类图工厂类+CreatOperation():运算类乘法工厂减法类+GetResult():double加法工厂减法工厂运算类+NumberA:double+Num

9、berB:double+GetResult():double加法类+GetResult():double乘法类+GetResult():double除法类+GetResult():double除法工厂M的N次方类M的N次方工厂工厂方法模式工厂方法模式interface抽象工厂+CreatOperation():运算类乘法工厂减法类+GetResult():double加法工厂减法工厂运算类+NumberA:double+NumberB:double+GetResult():double加法类+GetResult():double乘法类+GetResult():double除法类+GetResu

10、lt():double除法工厂M的N次方类M的N次方工厂工厂方法模式工厂方法模式简单工厂(SimpleFactory)类雷锋类雷锋类大学生(undergraduate)类志愿者(volunteer)类简单工厂法实现雷锋工厂的UML类图工厂方法模式工厂方法模式简单工厂(SimpleFactory)类社区志愿者工厂(VolunteerFactory)学雷锋的大学生工厂(UndergraduateFactory)雷锋类雷锋类大学生(undergraduate)类志愿者(volunteer)类工厂方法实现雷锋工厂的UML类图工厂方法模式工厂方法模式 工厂类含有必要的工厂类含有必要的判断逻辑判断逻辑,可

11、以决定在什,可以决定在什么时候创建哪一个产品类的实例,客户端可以免么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅除直接创建产品对象的责任,而仅仅“消费消费”产产品。品。 简单工厂模式通过这种做法实现了对简单工厂模式通过这种做法实现了对责任的责任的分割分割。简单工厂VS工厂方法简单工厂模式优点简单工厂模式优点:工厂方法模式工厂方法模式简单工厂模式缺点:简单工厂模式缺点:当产品有复杂的多层等级结构时,工厂类只有自己,当产品有复杂的多层等级结构时,工厂类只有自己, 以不变应万变以不变应万变. 因为工厂类集中了因为工厂类集中了 所有产品创建逻所有产品创建逻辑,一旦不能正常工

12、作,整个系统都要受到影响。辑,一旦不能正常工作,整个系统都要受到影响。系统扩展困难,一旦添加新产品就不得不修改系统扩展困难,一旦添加新产品就不得不修改 工厂逻工厂逻辑,有可能造成工厂逻辑过于复杂。辑,有可能造成工厂逻辑过于复杂。 违背了开放违背了开放-封闭原则。封闭原则。简单工厂模式通常使用简单工厂模式通常使用静态工厂方法静态工厂方法,这使得无法由,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结子类继承,造成工厂角色无法形成基于继承的等级结构。构。 工厂方法模式工厂方法模式工厂方法模式优点:在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还在工厂方法模式中,工厂方法用来创建

13、客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节,向客户隐藏了哪种具体产品类将被实例化这一细节,用户只需要关心用户只需要关心所需产品对应的工厂,无需关系创建细节,甚至无需知道具体产品类所需产品对应的工厂,无需关系创建细节,甚至无需知道具体产品类的类名的类名。基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它能够使能够使工厂可以自主确定创建何种产品对象,而如何创建这个对象的工厂可以自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部细节则完全封装在具体工厂内部。工厂方法模式之所以又被称为多态。工厂方法模式之所以又被称为多态工厂模式,正是因为所有的具体工厂类都具有同一抽象父类工厂模式,正是因为所有的具体工厂类都具有同一抽象父类。克服了简单工厂违背的开放封闭原则的缺点,又保持了封装对象创建过程的优点。工厂方法模式工厂方法模式工厂方法模式缺点:在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,有更多的类需要编译和运行,会给系统带来一些额外的开销。工厂方法模式工厂方法模式工厂方法模式工厂方法模式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号