`
xieyaxiong
  • 浏览: 41545 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

design pattern——抽象工厂模式

 
阅读更多

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

 

 

 

 

 

抽象工厂模式结构图:

 

 

 

 

 

 

抽象工厂模式实现代码:

/**
 * 产品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
分享到:
评论

相关推荐

    design-pattern-java.pdf

    工厂三兄弟之抽象工厂模式(二) 工厂三兄弟之抽象工厂模式(三) 工厂三兄弟之抽象工厂模式(四) 工厂三兄弟之抽象工厂模式(五) 单例模式-Singleton Pattern 确保对象的唯一性——单例模式 (一) 确保对象的...

    Designpattern.zip

    在这个名为"Designpattern.zip"的压缩包中,我们聚焦于Java编程语言中的一个关键设计模式——工厂模式。这个模式属于创建型模式,它提供了一种创建对象的最佳方式,旨在简化对象的创建过程,并提高代码的可读性和可...

    GoF的经典著作设计模式(Design Pattern)

    2. **抽象工厂模式**:当需要创建一系列相关或相互依赖的对象时,抽象工厂模式可以提供一个接口,无需指定具体类。这增强了系统的可扩展性,使得添加新的产品族变得简单。 3. **单例模式**:确保一个类只有一个实例...

    Head First Design Pattern

    3. **抽象工厂模式(Abstract Factory)**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。这在需要一组相关对象时非常有用,如在不同的操作系统中创建相似的用户界面元素。 4. **建造者...

    Design Pattern 实验指导手册1

    然而,当产品类型变得非常复杂时,可能需要考虑使用其他更复杂的创建型模式,如工厂方法或抽象工厂模式,以保持代码的可扩展性和灵活性。 总之,《Design Pattern 实验指导手册1》通过讲解简单工厂模式,引导读者...

    Design Pattern实验指导手册2

    工厂方法模式属于抽象工厂模式的一种特殊情况,它的主要目的是将对象的创建过程封装到一个单独的类中,使得客户端代码可以使用这个类来创建所需的对象,而无需知道具体的实现细节。这遵循了"开闭原则",即对扩展开放...

    Design Pattern FrameworkTM

    - 解释了工厂模式的不同变体,如简单工厂、工厂方法和抽象工厂。 - 分析了这些变体在 .NET 中的应用场景和实现方式。 - **第 5 章:单例模式**(页码:8) - 讨论了单例模式的核心思想及其在多线程环境下的实现。...

    设计模式design-pattern-java.pdf

    抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,无需指定它们具体的类。与简单工厂模式不同的是,它通常用于创建一组相关的对象。 #### 2.4 单例模式 单例模式确保一个类只有一个实例,并提供一个...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    - 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,无需指定它们的具体类。 - 构建者模式(Builder):将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 ...

    HeadFirst Design Pattern

    1. 创建型模式:这类模式主要关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建...

    工厂设计模式Java示例

    在Java中,工厂设计模式通常包括简单工厂模式、工厂方法模式和抽象工厂模式。这里提到的"工厂、抽象工厂"可能指的是这两种不同的工厂模式: 1. **简单工厂模式**:这是最基础的形式,通常包含一个静态工厂方法,...

    Introduction to Design Pattern in C#

    抽象工厂模式(Abstract Factory)提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。这类模式在创建对象时,能够提供更好的封装性,并且有助于降低系统的耦合度。 结构型模式关注于类或对象的...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    - **抽象工厂**(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 - **建造者**(Builder):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。...

    design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip

    - 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 - 建造者模式:将复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。 - 原型模式:通过复制已有对象...

    模式举例代码——设计模式和举例代码

    - 抽象工厂模式:为一个产品族提供一个创建对象的接口,而不必指定具体的产品类。 - 建造者模式:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - 构造函数模式:使用一个已经存在的...

    Design Pattern

    - 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。...

    管理系统javasal源码-Design-Patterns-Demo:超全的设计模式——理论+实现demo

    Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern) 2 结构型模式:这些设计模式关注类和对象的组合。继承的概念被用来...

Global site tag (gtag.js) - Google Analytics