工厂和单例模式.doc_第1页
工厂和单例模式.doc_第2页
工厂和单例模式.doc_第3页
工厂和单例模式.doc_第4页
工厂和单例模式.doc_第5页
全文预览已结束

下载本文档

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

文档简介

设计模式一、 简介二、 工厂模式工厂模式可以分为简单工厂、工厂方法、抽象工厂,他们是按照从简单到复杂的顺序排序的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23模式。但是它是理解其它工厂模式的很好的一个基础。所以在讲述设计模式的时候,经常有人提到简单工厂模式。工厂模式属于创建型模式,而创建型的模式关注的是对象的创建,它对创建对象的过程进行了抽象和封装,当客户程序需要某个对象,只需要去用这个对象,并不需要去关心创建对象过程的逻辑。(一)、简单工厂模式如果利用java来实现:/基类public abstract class EvListItemprivate int mItemType = XpStyle;public abstract void drawItem(Drawable drawable);public int getItemType()return mItemType;/工厂模式public class EvListItemFactorypublic EvListItem createItem(int nItemType)EvListItem item = null;switch(nItemType)case SimpleStyle:item = new EvSimpleStyleItem();break;case iOsStyle:item = new EviOsStyleItem();break;case AndroidStyle:item = new EvAndroidStyleItem();break;default:item = new EvXpStyleItem();break;return item;/使用简单工厂public onDraw(Drawable drawable)EvListItem item = EvListItemFactory.createItem(AndroidStyle);item.draw(drawable);EvListItem item = EvListItemFactory.createItem(iOsStyle);item.draw(drawable);优点:1.简单工厂含有必要的判断逻辑,可以决定什么时候创建哪一个类,外面调用程序避免直接创建对象的责任,仅仅是使用对象而已。缺点1.当创建的对象有多个层次的等级结构时候,工厂类只有自己,以不变应万变。工厂类几种了了所有产品创建逻辑,一旦不能工作,将导致整个系统受到影响。2.系统扩展困难,一旦添加了新的类型不得不修改工厂逻辑,有可能导致工厂逻辑过于复杂。3.简单工厂使用的是静态工厂,这使得无法由子类继承,造成工厂角色无法形成基于继承的等级结构。(二)、工厂方法模式工厂方法模式,有一个抽象的产品类,可以派生出多个具体的产品类。一个抽象工厂类,可以派生出多个具体的工厂类。每个具体工厂类只能创建一个具体产品的实例。public abstract class EvListItemBaseFactorypublic abstract EvListItem createItem();public class EvAndroidItemFactorypublic EvListItem createItem()return new EvAndroidStyleItem();public class EviOsItemFactory()public EvListItem createItem()return new EviOsStyleItem();(三)、抽象工厂模式抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体的产品类。public abstract class EvSongListItempublic abstract drawItem(Drawable drawable);public abstract class EvSingerListItempublic abstract drawItem(Drawable drawable);public abstract class EvListItemBaseFactorypublic abstract EvListItem createItem();public class EvAndroidItemFactorypublic EvListItem createItem()return new EvAndroidStyleItem();public class EviOsItemFactory()public EvListItem createItem()return new EviOsStyleItem();public abstract class EvListItemBaseFactorypublic abstract EvSongListItem createItem();public abstract EvSingerListItem createItem();public class EvListItem800x480Factorypublic EvSongListItem createItem()return new EvSongListItem800x480();public EvSingerListItem createItem()return new EvSingerListItem800x480();public class EvListItem800x600Factorypublic EvSongListItem createItem()return new EvSongListItem800x600();public EvSingerListItem createItem()return new EvSingerListItem800x600();(四)、运用场合简单工厂实例化的类具有相同的接口,子类有限并且基本上不需要扩展时,可以使用简单工厂。采用简单工厂的优点是可以使用户根据参数获得对应得的类实例,避免了直接实例化类,降低了耦合性。缺点是可实例化的类型在编译时已经被确定,如果新增加类型,则需要修改工厂。当一个类不知道它所必需创建对象的类或一个类希望由子类来指定他所创建的对象时可以使用工厂方法。抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体的类。三、 单例模式单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。采用单例可以共享,不同对象之间的信息。单例的实例如下:public class EvApplicationprivate sta

温馨提示

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

最新文档

评论

0/150

提交评论