欢迎来到天天文库
浏览记录
ID:48587476
大小:1.30 MB
页数:24页
时间:2020-01-23
《工厂方法模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、工厂方法模式(FactoryMethod)主讲人:海燕简单工厂模式(SimpleFactory)定义:又称为静态工厂方法(StaticFactoryMethod)模式,它属于类创建型模式。在简单工厂模式中,可以根据自变量的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。水果农场☞只要说出水果的名字就能得到想到的水果。动机(Motivation):AppleOrangeBananaCreateCreatecreate用简单工厂模式实现计算器UML类图简单工厂类+createOpe
2、rate():运算类运算类+NumberA:double+NumberB:double+GetResult():double除法类+GetResult():double减法类+GetResult():double乘法类+GetResult():double加法类+GetResult():double类第一行:类名称第二行:类的特性(字段或属性)第三行:类的操作(方法或行为)‘+’表示public,‘-’表示private,’#’表示ptotected依赖关系若类名称为斜体字,则此类为抽象类继承关系知识点串讲属性为了更好地访问”类”中的成
3、员变量。C#提供了属性。所谓“更好”指的是更加安全、清楚等。保护好私有变量的隐蔽性等。私有变量不能被外界访问表示外界可以给内部的name赋值表示外界调用时可以得到name的值继承和多态::virtualoverride继承从语义上讲就是Is-a关系例如:“猫”类继承了“动物”类,语义上的意思就是,猫是一种动物猫就是子类,动物就是父类猫为派生类,动物为基类虚拟的,表示此方法是虚方法,可以被子类重写成员变量成员方法继承,表示Dog类继承了Animal类非Private的所有特征方法重写,表示覆盖父类中相应的成员方法工厂方法模式(Factor
4、yMethod)定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。___《设计模式》GoF定义:工厂方法模式又称为工厂模式,也叫虚拟构造器(VirtualConstructor)模式或者多态工厂(PolymorphicFactory)模式,它属于对象创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生产具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。工厂方法模式(FactoryMeth
5、od)结构图ProductCreator+FactoryMethod()ConcreteProductConcreteCreator+FactoryMethod()声明工厂方法,该方法返回一个Product类型的对象定义工厂方法所创建的对象的借口具体的产品,实现了Product借口重定义工厂方法以返回一个ConcreteProduct实例接口:看似是:声明了一个类,而且类的成员都具有“行为”注意:1.接口用interface声明,不用class2.接口名称前要加‘I’3.没有成员变量4.成员方法前面不能有修饰符5.方法没有方法体错误的例
6、子:工厂方法模式UML类图工厂类+CreatOperation():运算类乘法工厂减法类+GetResult():double加法工厂减法工厂运算类+NumberA:double+NumberB:double+GetResult():double加法类+GetResult():double乘法类+GetResult():double除法类+GetResult():double除法工厂简单工厂模式UML类图简单工厂类+createOperate():运算类运算类+NumberA:double+NumberB:double+GetResul
7、t():double除法类+GetResult():double减法类+GetResult():double乘法类+GetResult():double加法类+GetResult():double简单工厂模式UML类图简单工厂类+createOperate():运算类运算类+NumberA:double+NumberB:double+GetResult():double除法类+GetResult():double减法类+GetResult():double乘法类+GetResult():double加法类+GetResult():dou
8、ble工厂方法模式UML类图工厂类+CreatOperation():运算类乘法工厂减法类+GetResult():double加法工厂减法工厂运算类+NumberA:double+NumberB:doub
此文档下载收益归作者所有