java设计模式--创建型模式--抽象工厂

什么是抽象工厂,再次学习。

 1                                         抽象工厂
 2  概述
 3     提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
 4
 5  适用性
 6     1.一个系统要独立于它的产品的创建、组合和表示时。
 7
 8     2.一个系统要由多个产品系列中的一个来配置时。
 9
10     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。
11
12     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。
13              参与者
14     1.AbstractFactory
15       声明一个创建抽象产品对象的操作接口。
16
17     2.ConcreteFactory
18       实现创建具体产品对象的操作。
19
20     3.AbstractProduct
21       为一类产品对象声明一个接口。
22
23     4.ConcreteProduct
24       定义一个将被相应的具体工厂创建的产品对象。
25       实现AbstractProduct接口。
26
27     5.Client
28       仅使用由AbstractFactory和AbstractProduct类声明的接口
29  

测试类:

 1 public class test {
 2     public static void main(String[] args) {
 3         IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();
 4         ICat blackCat = blackAnimalFactory.createCat();
 5         blackCat.eat();
 6         IDog blackDog = blackAnimalFactory.createDog();
 7         blackDog.eat();
 8
 9         IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
10         ICat whiteCat = whiteAnimalFactory.createCat();
11         whiteCat.eat();
12         IDog whiteDog = whiteAnimalFactory.createDog();
13         whiteDog.eat();
14     }
15
16 }
1 public interface IAnimalFactory {
2
3     ICat createCat();
4
5     IDog createDog();
6 }
 1 public class BlackAnimalFactory implements IAnimalFactory {
 2
 3     public ICat createCat() {
 4         return new BlackCat();
 5     }
 6
 7     public IDog createDog() {
 8         return new BlackDog();
 9     }
10
11 }
1 public interface ICat {
2
3     void eat();
4 }
1 public class BlackCat implements ICat {
2
3     public void eat() {
4         System.out.println("The black cat is eating!");
5     }
6
7 }
1 public class WhiteCat implements ICat {
2
3     public void eat() {
4         System.out.println("The white cat is eating!");
5     }
6
7 }
时间: 2024-10-29 19:06:22

java设计模式--创建型模式--抽象工厂的相关文章

4、设计模式-创建型模式-抽象工厂模式

抽象工厂模式 产品等级结构和产品族 工厂方法模式中具体工厂负责生产具体的产品 每一个具体工厂对应一种具体的产品 工厂方法具有唯一性 一般情况下:一个具体工厂中只有一个或一组重载的工厂方法 有时候希望一个一个工厂可以提供多个产品对象 而不是单一的产品对象 产品等级结构: 产品等级结构即产品的继承结构,如一个抽象类是电视机 子类有海尔电视机.海信电视机等 抽象电视机与具体与具体品牌的电视机之间构成了一个产品等级结构 抽象电视机是父类,具体品牌的电视机是其子类 产品族: 在抽象工厂模式中 产品族是指由

创建型模式 抽象工厂

/** * 创建型模式 抽象工厂 * 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象. * * 抽象工厂(Creator)角色 * 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口. * 具体工厂( Concrete Creator)角色 * 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象. * 抽象(Product)角色 * 抽象

java设计模式--创建型模式

2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory)  这三种模式从上到下逐步抽象,并且更具一般性.GOF在<设计模式>一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory).将简单工厂模式

设计模式01 创建型模式 - 抽象工厂

参考 1. 三种工厂模式的分析以及C++实现|博客园 2. 设计模式之三:抽象工厂模式 | CSDN 3. 浅谈Java设计模式--单实例.简单工厂.抽象工厂.观察者 | CSDN 抽象工厂 为创建一组相关或者相互依赖的对象提供一个接口,而无需指定他们具体的类. 通俗讲,就是创建工厂的工厂,每个工厂都实现抽象工厂,从而决定一个产品族:不同工厂生产不同产品族. 抽象工厂只关心接口,也就是工厂和产品之间的关系,工厂和用户之间的关系,而不关心产品如何实现,而Template和Builder Patte

设计模式——创建型模式之工厂方法模式(三)

模式的定义与特点 工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的“创建与使用相分离”的特点. 我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”.如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背“开闭原则”. 本节介绍的“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以

第5章 创建型模式—抽象工厂模式

1. 抽象工厂的定义 (1)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 ①只需各要知道创建一系列对象的接口,而无需知道具体使用的是哪一个实现 ②这一系列对象是相关或相互依赖的,也就是说既要创建对象,还要约束它们之间的关系. ③一系列对象是构建新对象所需要的组成部分,并且对象之间相互有约赖.如电脑由CPU和主板等组成,但CPU的针脚数和主板提供的插口必须是匹配的,否则无法组装. (2)产品族和产品等级 ①产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等

创建型模式--抽象工厂模式

概述 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.  适用性 1.一个系统要独立于它的产品的创建.组合和表示时. 2.一个系统要由多个产品系列中的一个来配置时. 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时. 4.当你提供一个产品类库,而只想显示它们的接口而不是实现时.  参与者 1.AbstractFactory 声明一个创建抽象产品对象的操作接口. 2.ConcreteFactory 实现创建具体产品对象的操作. 3.AbstractProduct 为一

3 创建型模式-----抽象工厂模式

附加概念: 产品等级结构:不同品牌的同一类产品,如Haier电视机,TCL电视机都是电视机,因此属于同一个产品等级结构. 产品族:属于同一个品牌的所有产品,如Haier电视机,Haier冰箱等.   模式动机:工厂方法模式一般针对的是一个产品等级结构(如仅生产电视机),而抽象工厂模式针对的是多个产品等级结构(如不仅生产电视机,还生产空调). 模式定义:一个具体工厂可以创建一个产品族的所有产品,又称为Kit模式. 模式结构图: 模式实例: 一个电器工厂负责生产电视机和空调,其中包括Haier系列和

一起来学设计模式-----创建型模式之工厂方法

工厂方法模式,在简单工厂上再深一层,简单工厂里有一个弊端,就是在方法里是根据用户的输入直接返回子类对象.在工厂方法里,定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到了子类. 以之前的操作运算为例,使用工厂方法代码如下: from abc import ABCMeta, abstractmethod class BaseOperation: def GetResult(self,a,b): result = 0 return result class Op