Abstract Factory定义
为一系列相关对象或相互依赖的对象创建一个接口,而无需指定它们的具体类。抽象工厂在这里起到一个约束的作用,并提供所有子类的一个统一外观,来让客户端使用
假设现在有一个车辆制造工厂,它生产两种车,A类车和B类车,每类车有其各自的车门和轮子,这就需要不同的车间来做,A类车的车间有生产车门的工作,有生产轮子的工作,B类车的车间有生产车门的工作,有生产轮子的工作,我们需要哪类车的部件时,就去哪个车间拿,拿的过程(相同的操作,抽取出来一个抽象工厂类,这里的拿就是指方法)是一样的。
接下来使用一个例子来说明这个过程:
package abstractFactory;
/*
* 车间要成产的车门的接口,抽取的不同类车车门的共性
*/
public interface Door {
}
package abstractFactory;
/*
* 车间要成产的车轮子的接口,抽取的不同类车车轮子的共性
*/
public interface Wheel {
}
package abstractFactory;
/*
* A类车车门的实现类
*/
public class PaDoor implements Door {
public PaDoor() {
System.out.println("A类车的门");
}
}
package abstractFactory;
/*
* A类车轮子的实现类
*/
public class PaWheel implements Wheel {
public PaWheel() {
System.out.println("A类车的轮子");
}
}
package abstractFactory;
/*
* B类车门的实现类
*/
public class PbDoor implements Door {
public PbDoor() {
System.out.println("B类车的门");
}
}
package abstractFactory;
/*
* B类车轮子的实现类
*/
public class PbWheel implements Wheel {
public PbWheel() {
System.out.println("B类车的轮子");
}
}
package abstractFactory;
/*
* 抽象工厂类,抽象出两类车生产车间的共同操作,
* 生产车门和车轮子
* 如果新增C类车车间,新增一个C类车车间继承这个
* 抽象工厂类即可
*/
public abstract class AbstractFactory {
public abstract Door createDoor();
public abstract Wheel createWheel();
}
package abstractFactory;
/*
* A类车车间,继承抽象工厂类,制造A类车的车门和轮子
*/
public class FactoryA extends AbstractFactory {
@Override
public Door createDoor() {
// TODO Auto-generated method stub
return new PaDoor();
}
@Override
public Wheel createWheel() {
// TODO Auto-generated method stub
return new PaWheel();
}
}
package abstractFactory;
/*
* B类车车间,继承抽象工厂类,制造B类车的车门和轮子
*/
public class FactoryB extends AbstractFactory {
@Override
public Door createDoor() {
// TODO Auto-generated method stub
return new PbDoor();
}
@Override
public Wheel createWheel() {
// TODO Auto-generated method stub
return new PbWheel();
}
}
package abstractFactory;
/*
* 测试类
*/
public class Test {
public static void main(String[] args) {
//需要A类车的车轮,创建一个A类车车间的对象,调用生产车轮的方法
AbstractFactory factoryA = new FactoryA();
AbstractFactory factoryB = new FactoryB();
factoryA.createDoor();
factoryA.createWheel();
factoryB.createDoor();
factoryB.createWheel();
}
}
由此可以看出,制造车门和制造车轮的方法接口都是一样的,只要创建了不同的厂,使用同样的方法就可以得到不同的工厂的产品,我们并没有直接new A类车的车轮,没有直接new A类车的车门,他们的实例化过程是通过工厂方法中的
public Door createDoor() {
// TODO Auto-generated method stub
return new PaDoor();
}
来实现的
- 大小: 10.4 KB
- 大小: 2.3 KB
- 大小: 33.9 KB
分享到:
相关推荐
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
抽象工厂(Abstract Factory)设计模式是软件工程中一种重要的创建型设计模式,它提供了一种创建对象组的方式,这些对象属于同一族系并且彼此相关。这个模式的主要目标是定义一个接口,用于创建一族相关或相互依赖的...
总的来说,抽象工厂模式在Java中是一种非常实用的设计模式,它可以帮助我们封装产品的创建过程,降低系统间的耦合度,同时提供了更好的可扩展性,使得添加新的产品族或者产品变得更加容易。在处理具有多种变体的复杂...
**Java设计模式——抽象工厂** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图。抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这...
Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。
抽象工厂模式是Java设计模式中的一种创建型模式,它提供了创建对象族的接口,而具体的对象族由子类决定。这种模式的主要目的是隔离接口与实现,使得客户端代码在更换产品族时无需修改,增强了软件的可扩展性和可维护...
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定具体的类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需了解它们的具体实现。在Java或其他面向...
抽象工厂模式是创建型设计模式的一种,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定具体类。这种模式的核心在于它允许客户端代码与具体实现细节解耦,使得更换一个产品族变得更为容易。...
例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...
抽象工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定它们的具体类。在Java编程中,抽象工厂模式通常用于实现跨平台或者跨框架的接口,使得系统...
**抽象工厂模式(Abstract Factory Pattern)是创建型设计模式之一,它提供了一种创建对象的接口,使得子类可以决定实例化哪一个类。这种类型的设计模式属于类的创建模式。** 在C#中,抽象工厂模式的核心在于抽象...
抽象工厂模式是设计模式中的一种结构型模式,它在C++编程中有着广泛的应用。这个模式主要用于创建一系列相关的对象,而无需指定它们的具体类。在本文中,我们将深入探讨抽象工厂模式的概念、工作原理以及在C++中的...
抽象工厂(Abstract Factory)模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这种模式允许客户端在不关心具体实现的情况下,使用一组相关或相互依赖的对象。在Java或...
这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建对象的不同策略,使代码更加灵活...
设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...
在众多设计模式中,抽象工厂(Abstract Factory)模式是一种创建型模式,它为创建一组相关或相互依赖的对象提供一个接口,而无需指定它们的具体类。这种模式允许客户端使用抽象接口与具体实现解耦,使得系统更易于...
"抽象工厂"是设计模式中的一种,属于创建型模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这个模式的核心在于隔离了产品对象的创建过程,使得系统对具体产品的依赖最小化,从而增强了系统的灵活性和...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而具体的对象族由子类决定。这种模式允许系统在不指定具体产品的前提下,能够创建一系列相关或相互依赖的对象,同时避免了硬编码所造成的...