第章 简单工厂模式Java_第1页
第章 简单工厂模式Java_第2页
第章 简单工厂模式Java_第3页
第章 简单工厂模式Java_第4页
第章 简单工厂模式Java_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章简单工厂模式本章教学内容

创建型模式创建型模式概述创建型模式简介简单工厂模式模式动机与定义模式结构与分析模式实例与解析模式效果与应用模式扩展创建型模式创建型模式概述创建型模式(CreationalPattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。创建型模式创建型模式概述创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。创建型模式想吃苹果!?创建型模式概述创建型模式通常获取苹果的两种方式自己种苹果树去超市买创建型模式概述创建型模式简单工厂模式(SimpleFactory)

工厂方法模式(FactoryMethod)抽象工厂模式(AbstractFactory)

原型模式(Prototype)单例模式(Singleton)建造者模式(Builder)创建型模式简介简单工厂模式模式动机只要说出水果的名字就能得到想要的水果。简单工厂模式模式动机考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。简单工厂模式模式定义简单工厂模式(SimpleFactoryPattern):又称为静态工厂方法(StaticFactoryMethod)模式,它属于类创建型模式。在简单工厂模式中,可以根据自变量的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂厂模式模式结构构简单工厂厂模式模式结构构简单工厂厂模式包包含如下下角色::Factory:工厂角角色Product:抽象产产品角色色ConcreteProduct:具体产产品角色色简单工厂厂模式模式分析析分析如下下代码::publicvoidpay(Stringtype){if(type.equalsIgnoreCase("cash")){//现金支付处理代码}elseif(type.equalsIgnoreCase("creditcard")){//信用卡支付处理代码}elseif(type.equalsIgnoreCase("voucher")){//代金券支付处理代码}else{……}}代码复杂杂,难以以维护简单工厂厂模式模式分析析重构后的的代码::publicabstractclassAbstractPay{publicabstractvoidpay();}publicclassCashPayextendsAbstractPay{publicvoidpay(){//现金支付处理代码}}抽象支付付类具体支付付类简单工厂厂模式模式分析析重构后的的代码::publicclassPayMethodFactory{publicstaticAbstractPaygetPayMethod(Stringtype){if(type.equalsIgnoreCase("cash")){returnnewCashPay();//根据参数创建具体产品}elseif(type.equalsIgnoreCase("creditcard")){returnnewCreditcardPay();//根据参数创建具体产品}……}}支付工厂厂简单工厂厂模式模式分析析将对象的的创建和和对象本本身业务务处理分分离可以以降低系统统的耦合合度,使得两两者修改改起来都都相对容容易。在调用工工厂类的的工厂方方法时,,由于工工厂方法法是静态态方法,,使用起起来很方方便,可可通过类类名直接接调用,,而且只只需要传传入一个个简单的的参数即即可,在在实际开开发中,,还可以以在调用用时将所所传入的的参数保保存在XML等格式的的配置文文件中,,修改参参数时无无需修改改任何Java源代码。。简单工厂厂模式最最大的问问题在于于工厂类的的职责相相对过重重,增加新新的产品品需要修修改工厂厂类的判判断逻辑辑,这一一点与开开闭原则则是相违违背的。。简单工厂厂模式的的要点在在于:当你需要要什么,,只需要要传入一一个正确确的参数数,就可可以获取取你所需需要的对对象,而而无需知知道其创创建细节节。简单工厂厂模式模式实例例与解析析实例一::简单电电视机工工厂某电视机机厂专为为各知名名电视机机品牌代代工生产产各类电电视机,,当需要要海尔牌牌电视机机时只需需要在调调用该工工厂的工工厂方法法时传入入参数““Haier”,需要海海信电视视机时只只需要传传入参数数“Hisense”,工厂可可以根据据传入的的不同参参数返回回不同品品牌的电电视机。。现使用用简单工工厂模式式来模拟拟该电视视机工厂厂的生产产过程。。简单工厂厂模式模式实例例与解析析实例一::简单电电视机工工厂简单工厂厂模式模式实例例与解析析实例一::简单电电视机工工厂参考代码码演示……简单工厂厂模式模式实例例与解析析实例二::权限管管理在某OA系统中,,系统根根据对比比用户在在登录时时输入的的账号和和密码以以及在数数据库中中存储的的账号和和密码是是否一致致来进行行身份验验证,如如果验证证通过,,则取出出存储在在数据库库中的用用户权限限等级((以整数数形式存存储),,根据不不同的权权限等级级创建不不同等级级的用户户对象,,不同等等级的用用户对象象拥有不不同的操操作权限限。现使使用简单单工厂模模式来设设计该权权限管理理模块。。简单工厂厂模式模式实例例与解析析实例二::权限管管理简单工厂厂模式模式实例例与解析析实例二::权限管管理参考代码码演示……简单工厂厂模式模式优缺缺点简单工厂厂模式的的优点如如下:工厂类含含有必要要的判断断逻辑,,可以决决定在什什么时候候创建哪哪一个产产品类的的实例,,客户端端可以免免除直接接创建产产品对象象的责任任,而仅仅仅“消消费”产产品;简简单工厂厂模式通通过这种种做法实现了对对责任的的分割,,它提供供了专门门的工厂厂类用于于创建对对象。客户端无无需知道道所创建建的具体体产品类类的类名名,只需需要知道道具体产产品类所所对应的的参数即即可,对于一一些复杂杂的类名名,通过过简单工工厂模式式可以减减少使用用者的记记忆量。。通过引入入配置文文件,可可以在不不修改任任何客户户端代码码的情况况下更换换和增加加新的具具体产品品类,在一定定程度上上提高了了系统的的灵活性性。简单工厂厂模式模式优缺缺点简单工厂厂模式的的缺点如如下:由于工厂类集集中了所所有产品品创建逻逻辑,一旦不不能正常常工作,,整个系系统都要要受到影影响。使用简单单工厂模模式将会会增加系统统中类的的个数,在一定定程序上上增加了了系统的的复杂度度和理解解难度。。系统扩展展困难,,一旦添添加新产产品就不不得不修修改工厂厂逻辑,,在产品品类型较较多时,有可能能造成工工厂逻辑辑过于复复杂,不不利于系系统的扩扩展和维维护。简单工厂厂模式由由于使用用了静态态工厂方方法,造造成工厂角色色无法形形成基于于继承的的等级结结构。简单工厂厂模式模式适用用环境在以下情情况下可可以使用用简单工工厂模式式:工厂类负负责创建建的对象象比较少少:由于创创建的对对象较少少,不会会造成工工厂方法法中的业业务逻辑辑太过复复杂;客户端只只知道传传入工厂厂类的参参数,对对于如何何创建对对象不关关心:客户端既不不需要关心创创建细节,甚甚至连类名都都不需要记住住,只需要知知道类型所对对应的参数。。简单工厂模式式模式应用(1)在JDK类库中广泛使使用了简单工工厂模式,如如工具类,它用于格式式化一个本地地日期或者时时间。publicfinalstaticDateFormatgetDateInstance();publicfinalstaticDateFormatgetDateInstance(intstyle);publicfinalstaticDateFormatgetDateInstance(intstyle,Localelocale);简单工厂模式式模式应用(2)Java密码学参考代码:DESEncrypt.java//获取不同加密算法的密钥生成器KeyGeneratorkeyGen=KeyGenerator.getInstance("DESede");//创建密码器Ciphercp=Cipher.getInstance("DESede");简单工厂模式式模式扩展简单工厂模式式的简化:在有些情况下下工厂类可以以由抽象产品品角色扮演,,一个抽象产产品类同时也也是子类的工工厂,也就是是说把静态工工厂方法写到到抽象产品类类中。本章小结创建型模式对对类的实例化化过程进行了了抽象,能够够将对象的创创建与对象的的使用过程分分离。简单工厂模式式又称为静态态工厂方法模模式,它属于于类创建型模模式。在简单单工厂模式中中,可以根据据自变量的不不同返回不同同类的实例。。简单工厂模模式专门定义义一个类来负负责创建其他他类的实例,,被创建的实实例通常都具具有共同的父父类。简单工厂模式式包含三个角角色:工厂角角色负责实现现创建所有实实例的内部逻逻辑;抽象产产品角色是所所创建的所有有对象的父类类,负责描述述所有实例所所共有的公共共接口;具体体产品角色是是创建目标,,所有创建的的对象都充当当这个角色的的某个具体类类的实例。本章小结简单工厂模式式的要点在于于:当你需要要什么,只需需要传入一个个正确的参数数,就可以获获取你所需要要的对象,而而无

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论