(创建模式)--抽象工厂.doc_第1页
(创建模式)--抽象工厂.doc_第2页
(创建模式)--抽象工厂.doc_第3页
(创建模式)--抽象工厂.doc_第4页
全文预览已结束

下载本文档

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

文档简介

抽象工厂环境中存在以下项。(1)一组相关依赖类。(2)一组具体工厂类,实施由抽象工厂类提供的接口。每个工厂控制或提供了对特定相关依赖对象的访问权限,并以特定于工厂所控制的类组的方式实现抽象工厂接口。抽象工厂模式在以下情况下非常有用:客户机对象想创建其中一个相关依赖类的实例,但并不知道要实例化哪个特定的具体类。如果没有抽象工厂,则需要在创建实例处指明选择相应类所需的实施。抽象工厂可通过提供用于创建此类对象的必要接口来避免这种重复工作。不同的具体工厂都会实施这种接口。客户机对象会利用这些具体工厂来创建对象,而无需知道实际上实例化哪个类。如下例,UML类图。s代码实现如下。=抽象工厂类=package .bzu.jzc.AbstractFactory; /* * 抽象工厂类。 * 抽象工厂用于创建相关对象组,同时 * 隐藏实际的具体类。这对插入另一个对象以改变 * 系统行为来说非常有用。 * author jin * */public interface InterAnimalFactory public InterDog createDog(); public InterCat createCat();=实现抽象工厂的具体类=package .bzu.jzc.AbstractFactory;/* * 具体工厂类. * 具体工厂类的目的是为了管理对象的创建, * 以及对象之间的依赖性和一致性需求。 * author jin * */public class WhiteAnimalFactory implements InterAnimalFactory Override public InterDog createDog() InterDog whiteDog=new WhiteDog(); return whiteDog; Override public InterCat createCat() InterCat whiteCat=new WhiteCat(); return whiteCat; =具体工厂类=package .bzu.jzc.AbstractFactory;/* * 具体工厂类 * author jin * */public class BlackAnimalFactory implements InterAnimalFactory Override public InterDog createDog() InterDog blackDog=new BlackDog(); return blackDog; Override public InterCat createCat() InterCat blackCat=new BlackCat(); return blackCat; =抽象产品=package .bzu.jzc.AbstractFactory;/* * 抽象产品。 * author jin * */public interface InterCat public void climbTree();package .bzu.jzc.AbstractFactory;/* * 抽象产品 * author jin * */public interface InterDog public void eat();=具体产品=package .bzu.jzc.AbstractFactory;/* * 具体产品 * author jin * */public class BlackDog implements InterDog Override public void eat() System.out.println(BlackDog is eatting); package .bzu.jzc.AbstractFactory;/* * 具体产品 * author jin * */public class WhiteDog implements InterDog Override public void eat() System.out.println(WhiteDog is eatting); package .bzu.jzc.AbstractFactory;/* * 具体产品 * author jin * */public class BlackCat implements InterCat public void climbTree() System.out.println(BlackCat is Climbing); package .bzu.jzc.AbstractFactory;/* * 具体产品 * author jin * */public class WhiteCat implements InterCat Override public void climbTree() System.out.println(WhiteCat is Climbing); 抽象工厂模式允许一组相关类中的类创建实例,而不必让客户机对象指定要例示的实际具体类。抽象工厂模式适用于:(1)一个系统要独立于它的产品的创建、组合和表示时。(2)一个系统要由多个产品系列中的一个来配置时。(

温馨提示

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

评论

0/150

提交评论