接着昨天的工厂模式接着说说抽象工厂,当你拥有多个抽象对象的时候。你的工厂模式估计就不给力了。这时候你就该考虑抽象工厂了。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象
不说了上代码。
package AbstractFactory;
public interface AbstractFactory {
public AbstractProduct createConcreteProductA();
public AbstractProduct createConcreteProductB();
}
package AbstractFactory;
public interface AbstractProduct {
public void doSomething();
}
package AbstractFactory;
public class ConcreteFactory implements AbstractFactory {
public ConcreteFactory() {
super();
}
public AbstractProduct createConcreteProductA() {
return new ConcreteProductA();
}
public AbstractProduct createConcreteProductB() {
return new ConcreteProductB();
}
}
package AbstractFactory;
public class ConcreteProductA implements AbstractProduct {
public ConcreteProductA() {
super();
}
public void doSomething() {
System.out.println("A产品");
}
}
package AbstractFactory;
public class ConcreteProductB implements AbstractProduct {
public ConcreteProductB() {
super();
}
public void doSomething() {
System.out.println("B产品");
}
}
package AbstractFactory;
public class ClientA {
private final AbstractFactory fFactory;
public ClientA(AbstractFactory factory) {
super();
fFactory = factory;
}
public void useConcreteProductA() {
final AbstractProduct product = fFactory.createConcreteProductA();
product.doSomething();
}
public void useConcreteProductB() {
final AbstractProduct product = fFactory.createConcreteProductB();
product.doSomething();
}
}
package AbstractFactory;
public class ClientB {
private final AbstractFactory fFactory;
public ClientB(AbstractFactory factory) {
super();
fFactory = factory;
}
public void useConcreteProductA() {
final AbstractProduct product = fFactory.createConcreteProductA();
product.doSomething();
}
public void useConcreteProductB() {
final AbstractProduct product = fFactory.createConcreteProductB();
product.doSomething();
}
}
package AbstractFactory;
public class AbstractFactoryTest {
public static void main(String[] args) {
ClientA clientA = new ClientA(new ConcreteFactory());
clientA.useConcreteProductA();
clientA.useConcreteProductB();
ClientB clientB = new ClientB(new ConcreteFactory());
clientB.useConcreteProductA();
clientB.useConcreteProductB();
}
}
这里的代码并没有用抽象的类,而是使用的接口。
分享到:
相关推荐
抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而无需指定它们的具体类。在.NET开发中,这种模式常用于实现多数据库连接,比如连接到MySQL、SQL Server或Oracle等不同的数据库系统。...
java设计模式----抽象工厂模式,简单工厂模式代码 代码内部
设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)
设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)
**设计模式——抽象工厂之小解** 在软件工程中,设计模式是一种被广泛采用的解决常见问题的经验总结,它们是经过验证的、可重用的解决方案。抽象工厂(Abstract Factory)设计模式是其中的一种创建型模式,它提供了...
抽象工厂模式是创建型设计模式的一种,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定具体类。这种模式的核心在于它允许客户端代码与具体实现细节解耦,使得更换一个产品族变得更为容易。...
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。怎么应对这种变化?怎么绕过常规的对象的创建方法(new)...这就是我们要说的抽象工厂模式。
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定具体的类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需了解它们的具体实现。在Java或其他面向...
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...
抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定其具体的类。这种模式的关键在于“族”,即一系列相关的对象。在抽象工厂模式中,我们创建一个抽象工厂接口,然后为每一种具体...
抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统有多个产品族,而每个产品族又有多个具体产品时,如何组织代码的问题。在Java中,抽象工厂模式提供了一种创建对象组的方式,使得这些对象属于...
java常用设计模式-抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建...
抽象工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定它们的具体类。在Java编程中,抽象工厂模式通常用于实现跨平台或者跨框架的接口,使得系统...
抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...
**Java设计模式——抽象工厂** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图。抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这...
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式