针对问题:和工厂方法模式类似,用一个继承体系来实现创建对象的多变性。不同的是,抽象工厂模式针对的是产品族(许多个产品).
抽象工厂模式结构图:

抽象工厂模式实现代码:
/**
* 产品A接口
* @author bruce
*
*/
public abstract class ProductA {
public abstract void descriptionA();
}
/**
* 产品B接口
* @author bruce
*
*/
public abstract class ProductB {
public abstract void descriptionB();
}
/**
* 创建者接口
* @author bruce
*
*/
public abstract class Creator {
public abstract ProductA createProductA();
public abstract ProductB createProductB();
}
/**
* 产品A1(产品A)
* @author bruce
*
*/
public class ProductA1 extends ProductA{
@Override
public void descriptionA() {
// TODO Auto-generated method stub
System.out.println("ProductA:ProductA1");
}
}
/**
* 产品A2(产品A)
* @author bruce
*
*/
public class ProductA2 extends ProductA{
@Override
public void descriptionA() {
// TODO Auto-generated method stub
System.out.println("ProductA:ProductA2");
}
}
/**
* 产品B1(产品B)
* @author bruce
*
*/
public class ProductB1 extends ProductB{
@Override
public void descriptionB() {
// TODO Auto-generated method stub
System.out.println("ProductB:ProductB1");
}
}
/**
* 产品B2(产品B)
* @author bruce
*
*/
public class ProductB2 extends ProductB{
@Override
public void descriptionB() {
// TODO Auto-generated method stub
System.out.println("ProductB:ProductB2");
}
}
/**
* 创建类1
* @author bruce
*
*/
public class ConcreteCreator1 extends Creator{
@Override
public ProductA createProductA() {
// TODO Auto-generated method stub
return new ProductA1();
}
@Override
public ProductB createProductB() {
// TODO Auto-generated method stub
return new ProductB1();
}
}
/**
* 创建者2
* @author bruce
*
*/
public class ConcreteCreator2 extends Creator{
@Override
public ProductA createProductA() {
// TODO Auto-generated method stub
return new ProductA2();
}
@Override
public ProductB createProductB() {
// TODO Auto-generated method stub
return new ProductB2();
}
}
/**
* 测试
* @author bruce
*/
public class Client {
public static void main(String[] args) {
Creator creator=new ConcreteCreator1();
ProductA pa=creator.createProductA();
ProductB pb=creator.createProductB();
pa.descriptionA(); //ProductA:ProductA1
pb.descriptionB(); //ProductB:ProductB1
creator=new ConcreteCreator2();
pa=creator.createProductA();
pb=creator.createProductB();
pa.descriptionA(); //ProductA:ProductA2
pb.descriptionB(); //ProductB:ProductB2
}
}

- 大小: 29.9 KB
分享到:
相关推荐
工厂三兄弟之抽象工厂模式(二) 工厂三兄弟之抽象工厂模式(三) 工厂三兄弟之抽象工厂模式(四) 工厂三兄弟之抽象工厂模式(五) 单例模式-Singleton Pattern 确保对象的唯一性——单例模式 (一) 确保对象的...
在这个名为"Designpattern.zip"的压缩包中,我们聚焦于Java编程语言中的一个关键设计模式——工厂模式。这个模式属于创建型模式,它提供了一种创建对象的最佳方式,旨在简化对象的创建过程,并提高代码的可读性和可...
2. **抽象工厂模式**:当需要创建一系列相关或相互依赖的对象时,抽象工厂模式可以提供一个接口,无需指定具体类。这增强了系统的可扩展性,使得添加新的产品族变得简单。 3. **单例模式**:确保一个类只有一个实例...
3. **抽象工厂模式(Abstract Factory)**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。这在需要一组相关对象时非常有用,如在不同的操作系统中创建相似的用户界面元素。 4. **建造者...
然而,当产品类型变得非常复杂时,可能需要考虑使用其他更复杂的创建型模式,如工厂方法或抽象工厂模式,以保持代码的可扩展性和灵活性。 总之,《Design Pattern 实验指导手册1》通过讲解简单工厂模式,引导读者...
工厂方法模式属于抽象工厂模式的一种特殊情况,它的主要目的是将对象的创建过程封装到一个单独的类中,使得客户端代码可以使用这个类来创建所需的对象,而无需知道具体的实现细节。这遵循了"开闭原则",即对扩展开放...
- 解释了工厂模式的不同变体,如简单工厂、工厂方法和抽象工厂。 - 分析了这些变体在 .NET 中的应用场景和实现方式。 - **第 5 章:单例模式**(页码:8) - 讨论了单例模式的核心思想及其在多线程环境下的实现。...
抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,无需指定它们具体的类。与简单工厂模式不同的是,它通常用于创建一组相关的对象。 #### 2.4 单例模式 单例模式确保一个类只有一个实例,并提供一个...
- 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,无需指定它们的具体类。 - 构建者模式(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 ...
1. 创建型模式:这类模式主要关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建...
在Java中,工厂设计模式通常包括简单工厂模式、工厂方法模式和抽象工厂模式。这里提到的"工厂、抽象工厂"可能指的是这两种不同的工厂模式: 1. **简单工厂模式**:这是最基础的形式,通常包含一个静态工厂方法,...
抽象工厂模式(Abstract Factory)提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。这类模式在创建对象时,能够提供更好的封装性,并且有助于降低系统的耦合度。 结构型模式关注于类或对象的...
- **抽象工厂**(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 - **建造者**(Builder):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。...
- 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 - 建造者模式:将复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。 - 原型模式:通过复制已有对象...
- 抽象工厂模式:为一个产品族提供一个创建对象的接口,而不必指定具体的产品类。 - 建造者模式:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 构造函数模式:使用一个已经存在的...
- 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。...
Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern) 2 结构型模式:这些设计模式关注类和对象的组合。继承的概念被用来...