java-android设计模式学习笔记3工厂方法模式-编程开发技术

java/android设计模式学习笔记(3):工厂方法模式-编程开发技术java/android设计模式学习笔记(3):工厂方法模式原文出处:Shawn_Dut这篇来介绍一下工厂方法模式(FactoryMethodPattern),在实际开发过程屮我们都习惯于直接使用new关键字用来创建一个对彖,可是有时候对彖的创造需要一系列的步骤:你可能需要计算或取得对象的初始设置;选择生成哪个子对象实例;或在生成你需要的对象之询必须先生成一些辅助功能的对象,这个时候就需要了解该对象创建的细节,也就是说使用的地方与该对象的实现耦合在了一起,不利丁扩展,为了解决这个问题就需要用到我们的工厂方法模式,它适合那些创建复杂的对彖的场景,工厂方法模式也是一个使用频率很高的设计模式。PS:对技术感兴趣的同鞋加群544645972-起交流。设计模式总目录java/android设计模式学习笔记目录特点工厂方法模式(FactoryMethodPattern)定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类,这样的设计将对象的创建封装其来,以便于得到更松耦合,更有弹性的设计。工厂方法模式是创建型设计模式Z-,是结构较为简单的一种模式,在我们平时的开发过程中应用也是非常的广泛,比如ArrayList,HashSet,与Iterator之间就能算是一种工厂方法。简单工厂模式(SimpleFactory)是工厂方法模式的一种,工厂方法模式的特点总结一下:•简单工厂模式从菜种意义上来说不算是真正的设计模式,但仍不失为一个简单的方法,可以将客户程序从具休类屮解耦;•工厂方法模式使用继承,把对彖的创建委托给子类,子类实现工厂方法来创建对彖,也就是说允许将实例化延迟到了类进行;;•工厂方法模式是一个非常典型的“针对抽象编程,而不是具体类编程”例子。UML类图o-IProduct0-IFactory---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---+getPrice():int+createProduct():IProduct△1111111△111111ConcreteProductConereteFactory———+getPrice():int+createProduct():IProduct上图为工厂方法模式的uml类图,几个角色的分工也很明确,主要分为四大模块:•一是抽彖工厂接口,其为工厂方法模式的核心,它定义了一个工厂类所具备的基本行为;•二是具体工厂,其实现了具体的业务逻辑;•三是抽象产品接口,它定义了所有产品的公共行为;•四是具体产品,为实现抽象产品的菜个具体产品的对象。简单工厂模式和工厂方法模式的区别就在于简单工厂模式将抽彖工厂接口这个角色给精简掉了,是工厂方法模式的一个弱化版木。从这种设计的角度來思考,工厂方法模式是完全符合设计原则的,它将对象的创建封装起來,以便于得到更松耦合,更有弹性的设计,而且工厂方法模式依赖于抽象的接口,将实例化的任务交给子类去完成,冇非常好的可扩充性。示例与源码我们以一个简单的玩具工厂为例,工厂中生产小孩的玩具,女生的玩具和男生的玩具,先写一个1Toy的抽象产品接口用来定义玩具的基本行为模式,然后实现该接口生成儿个玩具的具体产品类ChildrenToy,MenToy和WomenToy类:IToy.classpublicinterface1Toy{/***名字*/StringgetName();/***价格*/floatprice();---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---/***玩*/voidplay();}ChildrenToy.classpublicclassChildrenToyimplements1Toy{©OverridepublicStringgetName(){return〃toycar";}©Overridepublicfloatprice(){return10.5f;}©Overridepublicvoidplay(){Log.e(z/play,/,childisplayingatoycar〃);MenToy.classpublicclassMenToyimplemenlsTToy{©OverridepublicStringgetName(){return〃PS4〃;}©Overridepublicfloatprice(){return2300;}©Overridepublicvoidplay(){Log・c("play",,zamanisplayingGTA5onps4");WomenToy.classpublicclassWomenToyimplementsTToy{©OverridepublicStringgetName(){return"plushtoy";}©Override---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---publicfloatprice(){return200;}©Overridepublicvoidplay(){Log.e(z/play/z,/zawomanisplayingwithapl...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?