1.概念
《设计模式》一书中对于抽象工厂模式是这样定义的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
看过定义后可能有点不知所云,很难很抽象,下面我们举个例子看看吧,延续上篇blog
设计模式-工厂方法的例子!
2、示例
// 产品 Plant接口
public interface Plant { }//标志接口
//具体产品PlantA,PlantB
public class PlantA implements Plant {
public PlantA () {
System.out.println("create PlantA !");
}
public void doSomething() {
System.out.println(" PlantA do something ...");
}
}
public class PlantB implements Plant {
public PlantB () {
System.out.println("create PlantB !");
}
public void doSomething() {
System.out.println(" PlantB do something ...");
}
}
// 产品 Fruit接口
public interface Fruit { }
//具体产品FruitA,FruitB
public class FruitA implements Fruit {
public FruitA() {
System.out.println("create FruitA !");
}
public void doSomething() {
System.out.println(" FruitA do something ...");
}
}
public class FruitB implements Fruit {
public FruitB() {
System.out.println("create FruitB !");
}
public void doSomething() {
System.out.println(" FruitB do something ...");
}
}
// 抽象工厂方法
public interface AbstractFactory {
public Plant createPlant();
public Fruit createFruit();
}
//具体工厂方法
public class FactoryA implements AbstractFactory {
public Plant createPlant() {
return new PlantA();
}
public Fruit createFruit() {
return new FruitA();
}
}
public class FactoryB implements AbstractFactory {
public Plant createPlant() {
return new PlantB();
}
public Fruit createFruit() {
return new FruitB();
}
}
//调用工厂方法
public Client {
public method1() {
AbstractFactory instance = new FactoryA();
instance.createPlant();
}
}
3、抽象工厂模式与工厂方法模式的区别
可以这么说,工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。
(1)、其实工厂方法模式是用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。工厂方法创建一般只有一个方法,创建一种产品。抽象工厂一般有多个方法,创建一系列产品。
(2)、工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
简而言之->
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
分享到:
相关推荐
设计模式 - 抽象工厂模式
设计模式-抽象工厂模式(讲解及其实现代码)
设计模式-抽象工厂模式javademo java小程序
java常用设计模式-抽象工厂模式
设计模式--抽象工厂模式实现多数据库连接 设计模式,.net设计模式,抽象工厂
java,设计模式中的一种,抽象工厂设计模式。
PHP实现的抽象工厂模式,大家可以下载来参考学习下。
他是一种模式,计算机软件开发的一种模式,可以兼容多个数据库,以及数据库之间交互
创建型设计模式----抽象工厂模式
java设计模式----抽象工厂模式,简单工厂模式代码 代码内部
c++设计模式-创建型-抽象工厂方法-最简单源码-qt工程
iOS设计模式-抽象工厂 理论:http://blog.csdn.net/z251257144/article/details/7482810
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是抽象工厂模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
1.可以确信你从工厂得到的产品彼此是兼容的 2.可以避免具体产品和客户端代码之间的紧密耦合 3.符合单一职责原则 4.符合开闭原则
NULL 博文链接:https://jonathan-chen.iteye.com/blog/2194091
设计模式,抽象工厂 基本要领
自己写的设计模式 抽象工厂模式的Java源码,如果大家喜欢的话,就下载看看