(创建模式)--抽象工厂

合集下载

面向对象23种设计模式

面向对象23种设计模式

面向对象23种设计模式面向对象23种设计模式在面向对象的编程中,设计模式是一种解决问题的通用方案。

设计模式可以帮助开发人员在开发过程中减少代码的冗余和复杂性,并提高代码的可维护性和可重用性。

本文将介绍23种面向对象的设计模式。

1. 工厂方法模式工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但是让子类决定实例化哪个类。

在工厂方法模式中,客户端不需要知道具体的创建逻辑,只需要知道工厂类中定义的接口即可。

2. 抽象工厂模式抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不需要指定它们的具体类。

在抽象工厂模式中,客户端不需要知道具体的创建逻辑,只需要知道工厂类中定义的接口即可。

3. 单例模式单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个访问该实例的全局点。

4. 原型模式原型模式是一种创建型设计模式,它允许复制或克隆一个现有的对象,而不必知道其具体实现。

5. 建造者模式建造者模式是一种创建型设计模式,它允许逐步创建复杂的对象,而不必知道其内部实现细节。

6. 适配器模式适配器模式是一种结构型设计模式,它将一个或多个不兼容的类或接口转换为客户端所需的接口。

7. 桥接模式桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离开来,以便独立地进行修改。

8. 组合模式组合模式是一种结构型设计模式,它将一组对象作为单个对象处理,以便客户端可以以相同的方式处理单个对象和组合对象。

9. 装饰器模式装饰器模式是一种结构型设计模式,它允许向现有对象添加额外的功能,同时不改变其现有的结构。

10. 外观模式外观模式是一种结构型设计模式,它为一组复杂的子系统提供了一个统一的接口,以便于客户端使用。

11. 享元模式享元模式是一种结构型设计模式,它利用共享技术来最小化内存使用,以及提高应用程序的性能。

12. 代理模式代理模式是一种结构型设计模式,它提供了一个代理对象,使得客户端可以通过代理对象间接地访问实际对象。

设计模式主要分三个类型

设计模式主要分三个类型

设计模式主要分三个类型:创建型、结构型和行为型。

其中创建型有:一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。

四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。

五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。

行为型有:六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。

七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。

八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。

九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。

十、State,状态模式:允许对象在其内部状态改变时改变他的行为。

对象看起来似乎改变了他的类。

十一、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。

十二、China of Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系十三、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。

利用案例教学法由浅入深地讲解抽象工厂模式

利用案例教学法由浅入深地讲解抽象工厂模式
I …
#一:
. .

一 … - “
舻 s




董 篡一 e … !
; 一

_ * 悯
t 一


蠢静黔 i 薄


j Leabharlann 之 , 就是这些抽象产 品的具体子类的实例 。工厂类负责创建抽 也 象 产 品 的 具 体 子类 的 实 例 。
第二 阶段 : 首先给学生提 出问题 : 口就可 以实现访 问不 同 接 的数据库我们为什么采用工厂模式 呢?原 因有两个 : 第一是 客户 提 出新需求 , 自己不改变源码就更换 为其他数据库 ; 第二是从 开 发公 司考虑 , 了适应不 同的数据库 , 为 每次需要修 改 B L层源代 L 码 , 编译程序 , 再 发布程序 比较麻烦 。 那么具体实现步骤是创建新 的工 厂项 目类 , 加类 S at y 然后在类 中实 现返 回实现产 品 添 F c r, o 接 口的 方 法 , 体 代 码 如 下 : 具
摘 要 : 文 章 主 要 阐述 了抽 象 工 厂 模 式 , 过 利 用 案 例 教 学 法进 行 讲 解 , 学 员彻 底 理 通 让 解 并会 使 用抽 象 工厂 设 计 模 式 。 关 键 词 :抽 象 工厂 模 式 ; 案例 教 学 法 ; 解 讲 中 图分 类 号 :G7 2 1 文 献 标 识 码 :A 文 章 编 号 :0 0 83 (0 03 — 17 O 10 — 1 6 1)2 0 0 一 3 2
科 学 之友
Fed f c ne m t r rn oS i c A a u i e e s
21年1月 00 1
利 用 案 例 教 学 法 由浅 入 深地 讲 解 抽 象 工厂 模 式

工厂模式的三种形式

工厂模式的三种形式

⼯⼚模式的三种形式简单⼯⼚模式-Simple Factory Patter在简单⼯⼚模式结构图中包含如下⼏个⾓⾊:● Factory(⼯⼚⾓⾊):⼯⼚⾓⾊即⼯⼚类,它是简单⼯⼚模式的核⼼,负责实现创建所有产品实例的内部逻辑;⼯⼚类可以被外界直接调⽤,创建所需的产品对象;在⼯⼚类中提供了静态的⼯⼚⽅法factoryMethod(),它的返回类型为抽象产品类型Product。

● Product(抽象产品⾓⾊):它是⼯⼚类所创建的所有对象的⽗类,封装了各种产品对象的公有⽅法,它的引⼊将提⾼系统的灵活性,使得在⼯⼚类中只需定义⼀个通⽤的⼯⼚⽅法,因为所有创建的具体产品对象都是其⼦类对象。

● ConcreteProduct(具体产品⾓⾊):它是简单⼯⼚模式的创建⽬标,所有被创建的对象都充当这个⾓⾊的某个具体类的实例。

每⼀个具体产品⾓⾊都继承了抽象产品⾓⾊,需要实现在抽象产品中声明的抽象⽅法。

⼯⼚⽅法模式-Factory Method Pattern● Product(抽象产品):它是定义产品的接⼝,是⼯⼚⽅法模式所创建对象的超类型,也就是产品对象的公共⽗类。

● ConcreteProduct(具体产品):它实现了抽象产品接⼝,某种类型的具体产品由专门的具体⼯⼚创建,具体⼯⼚和具体产品之间⼀⼀对应。

● Factory(抽象⼯⼚):在抽象⼯⼚类中,声明了⼯⼚⽅法(Factory Method),⽤于返回⼀个产品。

抽象⼯⼚是⼯⼚⽅法模式的核⼼,所有创建对象的⼯⼚类都必须实现该接⼝。

● ConcreteFactory(具体⼯⼚):它是抽象⼯⼚类的⼦类,实现了抽象⼯⼚中定义的⼯⼚⽅法,并可由客户端调⽤,返回⼀个具体产品类的实例。

与简单⼯⼚模式相⽐,⼯⼚⽅法模式最重要的区别是引⼊了抽象⼯⼚⾓⾊,抽象⼯⼚可以是接⼝,也可以是抽象类或者具体类抽象⼯⼚模式-Abstract Factory Pattern● AbstractFactory(抽象⼯⼚):它声明了⼀组⽤于创建⼀族产品的⽅法,每⼀个⽅法对应⼀种产品。

java 面向对象的常用设计模式

java 面向对象的常用设计模式

java 面向对象的常用设计模式java 面向对象的常用设计模式有:1、观察者模式观察者模式又称为发布-订阅模式,定义了对象之间一对多依赖关系,当目标对象(被观察者)的状态发生改变时,它的所有依赖者(观察者)都会收到通知。

2、抽象工厂模式抽象工厂模式主要用于创建相关对象的家族。

当一个产品族中需要被设计在一起工作时,通过抽象工厂模式,能够保证客户端始终只使用同一个产品族中的对象;并且通过隔离具体类的生成,使得客户端不需要明确指定具体生成类;所有的具体工厂都实现了抽象工厂中定义的公共接口,因此只需要改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。

3、单例设计模式单例设计模式可以确保系统中某个类只有一个实例,该类自行实例化并向整个系统提供这个实例的公共访问点,除了该公共访问点,不能通过其他途径访问该实例。

4、策略模式将类中经常改变或者可能改变的部分提取为作为一个抽象策略接口类,然后在类中包含这个对象的实例,这样类实例在运行时就可以随意调用实现了这个接口的类的行为。

比如定义一系列的算法,把每一个算法封装起来,并且使它们可相互替换,使得算法可独立于使用它的客户而变化,这就是策略模式。

5、适配器模式适配器模式主要用于将一个类或者接口转化成客户端希望的格式,使得原本不兼容的类可以在一起工作,将目标类和适配者类解耦;同时也符合“开闭原则”,可以在不修改原代码的基础上增加新的适配器类;将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性,但是缺点在于更换适配器的实现过程比较复杂。

6、命令模式命令模式的本质是将请求封装成对象,将发出命令与执行命令的责任分开,命令的发送者和接收者完全解耦,发送者只需知道如何发送命令,不需要关心命令是如何实现的,甚至是否执行成功都不需要理会。

命令模式的关键在于引入了抽象命令接口,发送者针对抽象命令接口编程,只有实现了抽象命令接口的具体命令才能与接收者相关联。

J2EE常见设计模式(一)

J2EE常见设计模式(一)

J2EE常见设计模式(⼀)J2EE常见设计模式Abstract Factory(抽象⼯⼚)抽象⼯⼚,按字⾯含义来理解,就是⼀个不存在的⼯⼚,只是抽象出来的⼀个概念⼯⼚,反应到代码中,可以理解为定义了固定操作接⼝的⼀个抽象类,这个类不完成任何事(特殊情况也可以完成某些⽣产操作),⽽是交由它的⼦类来进⾏实际的操作。

理解概念总是困难的,因此⽤⽐喻的⽅式总是容易让⼈理解,这⾥我举个例⼦来说明抽象⼯⼚,在我们写代码的过程中,经常会牵扯到界⾯元素的变动,⽐如常见的什么Xp样式风格、Office2003风格、Vista风格等等,例⼦中,我以⽣成⽂本框、复选框为例,来说明抽象⼯⼚模式。

不论什么风格,它们都是控件,因此都会有创建⽂本框及复选框的⽅法,这些⽅法就是⼯⼚⽅法,代码如下:abstract class ControlFactory{public abstract TextBox CreateTextbox();public abstract CheckBox CreateCheckbox();}class StandardControlFactory : ControlFactory{public StandardControlFactory() { }public override TextBox CreateTextbox(){return new TextBox();}public override CheckBox CreateCheckbox(){return new CheckBox();}}StandardControlFactory类是创建标准控件的⼀个实现⼯⼚,同样我们要实现XP样式的⽂本框创建,则重新继承⼀下抽象⼯⼚类即可,代码如下:class XpControlFactory : ControlFactory{public XpControlFactory() { }public override TextBox CreateTextbox(){TextBox tb = new TextBox();//对tb对象进⾏XP样式修改return tb;}public override CheckBox CreateCheckbox(){CheckBox ck = new CheckBox();//对ck对象进⾏XP样式修改return ck;}}在客户端使⽤的时候,通过送⼊不同的实现⼯⼚,即可实现对界⾯的修改,例如:public Panel CreateInterface(ControlFactory factory){Panel p = new Panel();p.Controls.Add(factory.CreateCheckbox());p.Controls.Add(factory.CreateTextbox());return p;}上⾯的代码中,要修改不同风格的控件,只需要送⼊不同的抽象⼯⼚实例即可。

23种设计模式

23种设计模式(Design Patterns)设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

一、总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

还用两类模式:并发型模式和线程池模式。

二、设计模式六大原则:总原则:开闭原则开闭原则就是说对扩展开放,对修改关闭。

在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。

所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。

想要达到这样的效果,我们需要使用接口和抽象类等。

1、单一职责原则不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。

2、里氏替换原则(Liskov Substitution Principle)里氏代换原则(Liskov Substitution Principle LSP)是面向对象设计的基本原则之一。

里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。

LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

里氏代换原则是对“开-闭”原则的补充。

设计模式

1.2ok工厂方法模式factory method●别名:虚拟构造子(virtual constructor)模式,多态性(polymorphic Factory)工厂模式●用意:创建一个创建产品对象的工厂接口,将实际创建工作推迟到子类中●简单工厂模式与工厂方法模式区别⏹工厂方法模式是简单工厂模式的进一步抽象和推广。

由于使用了多态,工厂方法模式保持了简单工厂模式的优点,而且克服了他的缺点。

⏹工厂方法模式核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。

⏹工厂方法模式退化后变得很像简单工厂模式。

●角色⏹抽象工厂角色⏹具体工厂角色⏹抽象产品角色⏹具体产品角色●优点⏹允许系统在不修改具体工厂角色的情况下引入新的产品。

●工厂方法返还的应当是抽象类型,而不是具体类型。

这有这样才能保证产品的多态性。

●举例⏹Collection接口的Iterator就是一个工厂方法。

●工厂方法模式和模板方法模式的关系⏹工厂方法模式,经常和模版方法模式一起联合使用.⏹模版方法本身也可能就是工厂方法模式1.3ok抽象工厂模式Abstract factory●用意:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族的产品对象。

●抽象工厂模式与工厂方法模式最大的区别在于:⏹工厂方法模式针对的是一个产品等级结构,抽象工厂模式则需要面对多个产品等级结构.⏹一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象。

显然,这时候抽象工厂模式比工厂方法模式更有效率。

⏹抽象工厂模式是工厂方法模式的进一步推广●涉及的角色⏹抽象工厂角色⏹具体工厂类角色⏹抽象产品角色⏹具体产品角色⏹●以下情况应当考虑使用抽象工厂模式⏹一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节。

这对于所有形态的工厂都是重要的。

⏹这个系统的产品有多于一个的产品族。

而系统只消费其中某一族的产品。

(这是抽象工厂模式的原始用意。

工厂模式简介和应用场景

⼯⼚模式简介和应⽤场景⼀、简介⼯⼚模式主要是为创建对象提供了接⼝。

⼯⼚模式按照《Java与模式》中的提法分为三类:1. 简单⼯⼚模式(Simple Factory)2. ⼯⼚⽅法模式(Factory Method)3. 抽象⼯⼚模式(Abstract Factory)⼆、简单⼯⼚模式我喜欢吃⾯条,抽象⼀个⾯条基类,(接⼝也可以),这是产品的抽象类。

public abstract class INoodles {/*** 描述每种⾯条啥样的*/public abstract void desc();}先来⼀份兰州拉⾯(具体的产品类):public class LzNoodles extends INoodles {@Overridepublic void desc() {System.out.println("兰州拉⾯上海的好贵家⾥才5 6块钱⼀碗");}}程序员加班必备也要吃泡⾯(具体的产品类):public class PaoNoodles extends INoodles {@Overridepublic void desc() {System.out.println("泡⾯好吃可不要贪杯");}}还有我最爱吃的家乡的⼲扣⾯(具体的产品类):public class GankouNoodles extends INoodles {@Overridepublic void desc() {System.out.println("还是家⾥的⼲扣⾯好吃 6块⼀碗");}}准备⼯作做完了,我们来到⼀家“简单⾯馆”(简单⼯⼚类),菜单如下:public class SimpleNoodlesFactory {public static final int TYPE_LZ = 1;//兰州拉⾯public static final int TYPE_PM = 2;//泡⾯public static final int TYPE_GK = 3;//⼲扣⾯public static INoodles createNoodles(int type) {switch (type) {case TYPE_LZ:return new LzNoodles();case TYPE_PM:return new PaoNoodles();case TYPE_GK:default:return new GankouNoodles();}}}简单⾯馆就提供三种⾯条(产品),你说你要啥,他就给你啥。

23种常用的设计模式

23种常⽤的设计模式23种设计模式总体可以分为三类:⼀、创建型模式 ⼯⼚模式、抽象⼯⼚、单例模式、建造者模式、原型模式⼆、结构型模式 装饰器模式、适配器模式、代理模式、外观模式、桥接模式、组合模式、享元模式三、⾏为型模式 策略模式、观察者模式、模板⽅法模式、责任链模式、迭代⼦模式、备忘录模式、命令模式、访问者模式、中介者模式、状态模式、解释器模式下⾯主要介绍以上9种红⾊字体的设计模式。

(1)⼯⼚模式:定义⼀个创建对象的接⼝,让⼦类决定具体实例化哪⼀个对象。

public interface Sender{void sender();}public class SenderFactory{ //创建简单⼯⼚public Sender produce(String type){if(type.equals("mail")){return new MailSender();}else if(type.equals("msg")){return new MsgSender();}else{return null;}}}(2)抽象⼯⼚:为⼀组相关或相互依赖的对象提供⼀个接⼝,且⽆需指定他们的具体实现类。

//定义实现功能的接⼝public interface Sender{void sender();}//定义⽣产⼯⼚的接⼝,提供⼀个返回上⾯接⼝功能的⽅法,⽐如Senderpublic interface Provider{Sender produce();}//扩展发送邮件的实现类public class MailSenderFactory implements Provider{@OverrideSender produce(){return new MailSender();}}(3)单例模式:确保⼀个类只存在⼀个实例(介绍两种线程安全的单例模式)1.使⽤volatile关键字实现线程安全的单例模式public class SingletonInstance03 {private static volatile SingletonInstance03 singletonInstance03= null; //将这个变量定义为线程可见的private SingletonInstance03(){}public static SingletonInstance03 getInstance(){if(singletonInstance03 == null){//对这个实例加锁synchronized (singletonInstance03){if(singletonInstance03 == null){singletonInstance03 = new SingletonInstance03();}}}return singletonInstance03;}}2.使⽤内部类持有单例实例来实现线程安全的单例模式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

不锈钢电水壶http://www.sh0768.com/,男士内裤十大品牌http://www.kalsay.com/
抽象工厂环境中存在以下项。
(1)一组相关依赖类。
(2)一组具体工厂类,实施由抽象工厂类提供的接口。每个工厂控制或提供了对特定相关依赖对象的访问权限,并
以特定于工厂所控制的类组的方式实现抽象工厂接口。
抽象工厂模式在以下情况下非常有用:客户机对象想创建其中一个相关依赖类的实例,但并不知道要实例化哪个特
定的具体类。如果没有抽象工厂,则需要在创建实例处指明选择相应类所需的实施。抽象工厂可通过提供用于创建
此类对象的必要接口来避免这种重复工作。不同的具体工厂都会实施这种接口。客户机对象会利用这些具体工厂来
创建对象,而无需知道实际上实例化哪个类。
如下例,UML类图。
s
代码实现如下。
==抽象工厂类==
package cn.edu.bzu.jzc.AbstractFactory;

/**
* 抽象工厂类。
* 抽象工厂用于创建相关对象组,同时
* 隐藏实际的具体类。这对插入另一个对象以改变
* 系统行为来说非常有用。
* @author jin
*
*/
public interface InterAnimalFactory {
public InterDog createDog();
public InterCat createCat();
}
==实现抽象工厂的具体类==
package cn.edu.bzu.jzc.AbstractFactory;
/**
* 具体工厂类.
* 具体工厂类的目的是为了管理对象的创建,
* 以及对象之间的依赖性和一致性需求。
* @author jin
*
*/
public class WhiteAnimalFactory implements InterAnimalFactory {

@Override
public InterDog createDog() {
InterDog whiteDog=new WhiteDog();
return whiteDog;
}
不锈钢电水壶http://www.sh0768.com/,男士内裤十大品牌http://www.kalsay.com/


@Override
public InterCat createCat() {
InterCat whiteCat=new WhiteCat();
return whiteCat;
}

}
==具体工厂类==
package cn.edu.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 cn.edu.bzu.jzc.AbstractFactory;
/**
* 抽象产品。
* @author jin
*
*/
public interface InterCat {
public void climbTree();
}
package cn.edu.bzu.jzc.AbstractFactory;
/**
不锈钢电水壶http://www.sh0768.com/,男士内裤十大品牌http://www.kalsay.com/

* 抽象产品
* @author jin
*
*/
public interface InterDog {
public void eat();
}
==具体产品==
package cn.edu.bzu.jzc.AbstractFactory;
/**
* 具体产品
* @author jin
*
*/
public class BlackDog implements InterDog {

@Override
public void eat() {
System.out.println("BlackDog is eatting");

}

}
package cn.edu.bzu.jzc.AbstractFactory;
/**
* 具体产品
* @author jin
*
*/
public class WhiteDog implements InterDog {

@Override
public void eat() {
System.out.println("WhiteDog is eatting");

}

}
package cn.edu.bzu.jzc.AbstractFactory;
/**
* 具体产品
* @author jin
不锈钢电水壶http://www.sh0768.com/,男士内裤十大品牌http://www.kalsay.com/

*
*/
public class BlackCat implements InterCat{
public void climbTree(){
System.out.println("BlackCat is Climbing");
}
}
package cn.edu.bzu.jzc.AbstractFactory;
/**
* 具体产品
* @author jin
*
*/
public class WhiteCat implements InterCat{
@Override
public void climbTree() {
System.out.println("WhiteCat is Climbing");
}
}
抽象工厂模式允许一组相关类中的类创建实例,而不必让客户机对象指定要例示的实际具体类。
抽象工厂模式适用于:
(1)一个系统要独立于它的产品的创建、组合和表示时。
(2)一个系统要由多个产品系列中的一个来配置时。
(3)当你要强调一系列相关产品对象的设计以便进行联合使用时。
(4)当你提供一个产品类库,而只想显示它们的接口而不想实现时。

相关文档
最新文档