定义:
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,,当有多个抽象角色时,使用的一种工厂模式,它向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
注意:
注意产品族的概念:
是指位于不同产品等级结构中,功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。显然,每一个产品族中含有产品的数目,与产品等级结构的数目是相等的,形成一个二维的坐标系,水平坐标是产品等级结构,纵坐标是产品族。叫做相图。
详细参考:
http://baike.baidu.com/view/1580269.htm?fr=ala0_1
示例:某人喜欢做什么
注意看这“某人喜欢”与“做什么”,这可以理解为两个产品族,他们在逻辑上存在一定的关系,但又是绝对的相互独立,以下我们以“奶奶喜欢种苹果”、“爷爷喜欢种香蕉”的示例来说明。
示例中有两个产品族,那我们首先得为这两个产品族建立相应的工厂,
某人喜欢
public interface FamilyPerson {
public void like();
}
种什么(以水果为例)
public interface Fruit {
public void plant();
}
好了,以上就定义了“某人喜欢”与“种什么”两个工厂了,后面再来分别定义他们的实现类,首先定义“某人”的爷爷、奶奶实现类:
爷爷:
public class GrandePa implements FamilyPerson {
public void like() {
System.out.println("Grandpa likes ");
}
}
奶奶:
public class GrandeMa implements FamilyPerson {
public void like() {
System.out.println("Grandma likes ");
}
}
再定义“种什么”的苹果、香蕉实现类:
苹果:
public class Apple implements Fruit {
public void plant() {
System.out.println("Plant Apple.");
}
}
香蕉:
public class Banana implements Fruit {
public void plant() {
System.out.println("Plant Banana");
}
}
好了,基础的工厂都有了,现在需要一个抽象工厂了,呵,就是同时引用多个基础工厂的工厂,定下“爱好”工厂如下:
public interface Hobby {
public Fruit getFruit();
public FamilyPerson getFamilyPerson();
}
实现爷爷喜欢种香蕉:
public class GrandePaHobby implements Hobby {
public FamilyPerson getFamilyPerson() {
return new GrandePa();
}
public Fruit getFruit() {
return new Banana();
}
}
实现奶奶喜欢种苹果:
public class GrandeMaHobby implements Hobby {
public FamilyPerson getFamilyPerson() {
return new GrandeMa();
}
public Fruit getFruit() {
return new Apple();
}
}
一切OK,来个调用实例:
public class Test1 {
public static void main(String[] args) {
Hobby hobby = new GrandeMaHobby();
hobby.getFamilyPerson().like();
hobby.getFruit().plant();
}
}
输出:
Grandma likes
Plant Apple.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2010/04/20/5506794.aspx
分享到:
相关推荐
从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...
抽象工厂模式demo,本demo很简单,纯粹是一个思路。不理解抽象工厂模式的可以助于你的理解,如果写的不好请见谅。 .NET;
参考别人的文章加入自己的东西,然后模拟实现一个简单的抽象工厂模式,简洁介绍附带net简单用例代码如果你还不理解是老天爷的错
理解头绪,然后接合简单工厂模式、工厂方法模式对工厂家族的了解,再加上抽象工厂模式的意图,头脑中差不多有一个雏型了吧。好了,咱们一起来分析一下。。 先把各个角色揪出来。 抽象工厂:虚拟的衣柜,它只是个概念...
java设计模式之抽象工厂模式,实例----手机工厂,一个简单的例子,有助于理解抽象工厂模式。
NULL 博文链接:https://jacky-dai.iteye.com/blog/2296369
本demo很简单,纯粹是一个思路。不理解抽象工厂模式的可以助于你的理解,如果写的不好请见谅。 .NET;
本例主要给刚接触抽象工厂而又不是很理解的朋友巩固一下基础知识和了解抽象工厂的设计模式和它的作用。
1.超级经典抽象工厂,觉得能让你理解 2.工厂设计模式 3.和简单工厂融为一体
抽象工厂类的使用,简单的demo,方便初学者理解,设计模式。
设计模式之抽象工厂模式Demo , 使用最简单的实例来理解
大多少教员讲解抽象工厂的设计模式,学员无法理解,因为这个知识正如它的名字“抽象工厂”一样难于理解,导致很多教员反馈回来授课效果不好,那么如何讲解好这个知识点呢,我在实际的授课过程中总结了讲解这个难点的...
JAVA简单工厂创立性模式介绍,包含简单工厂,工厂方法,抽象工厂。举例说明让您更好理解!
工厂模式有:简单工厂模式;工厂方法模式;抽象工厂模式。抽象的程度越来越强,给出了三种模式的java代码,想完全理解还要仔细研究。
如果要扩大后花园的规模,比如一个在北方,一个在南方,这样工厂方法就无法实现了,就应当用抽象工厂,把各种各样的植物,又组成一个后花园. 所以我个人认为,简单工厂是一个工厂只生产一类的产品,面对的是具体的类,工厂...
通过简单明了的代码,进行抽象工厂的演示,而抽象工厂又是所有设计模式中比较典型的一个模式,对抽象工厂的理解可以加快对其它模式的认识。
对于初学者来说,理解和掌握一种设计模式,并非易事,网上有些复杂点的程序,看懂和理解需要很长的时间,这个简单的抽象工厂练习,希望能帮助初学者了解抽象工厂并且在VS中配置它。当然本人能力有限,有不合理的地方...
1. 工厂(Factory)角色 :简单工厂模式的核心,它负责实现创建所有实例的内部逻辑 2. 抽象产品(Product)角色 :简单工厂模式所创建的所有对象的