`
shuofenglxy
  • 浏览: 194413 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

菜鸟硕枫设计模式系列之4 抽象工厂模式

阅读更多
抽象工厂方法模式是用途最广的方法模式之一,其主要思想是利用工厂生产组合的复杂实例组,由于工厂、不同的实例组中实例一般都抽象为接口层次,所以很方便添加不同的具体工厂和不同的实例组。主要用于创建一系列相关的对象组或是其他方面。

抽象工厂方法模式类图:




具体实例demo:
建造工厂:
package abstractFactory;

public interface  CreatorFactory {

    Food getFoodInstance();
   
    Fruit getFruitInstance();
}


具体工厂1:
package abstractFactory;

public class ConcreteCreatorFactory1 implements CreatorFactory{

	public Food getFoodInstance() {
		return  new Bread();
	}
	
	public Fruit getFruitInstance() {
		return new Apple();
	}

}


具体工厂2:
package abstractFactory;

public class ConcreteCreatorFactory2 implements CreatorFactory{

	public Food getFoodInstance() {
		return  new Egg();
	}
	
	public Fruit getFruitInstance() {
		return new Pear();
	}

}



对象接口:

package abstractFactory;

public interface Food {

	String getFoodName();
}


package abstractFactory;

public interface Fruit {

	String getFruitName();
}


具体对象:
package abstractFactory;

public class Apple implements Fruit{

	@Override
	public String getFruitName(){
		// TODO Auto-generated method stub
		return "This is apple";
	}

}



package abstractFactory;

public class Bread implements Food{

	@Override
	public String getFoodName() {
		// TODO Auto-generated method stub
		return "This is Bread which always comes out with Apple.";
	}
	
}


package abstractFactory;

public class Egg implements Food{

	@Override
	public String getFoodName() {
		// TODO Auto-generated method stub
		return "This is Bread which always comes out with Apple.";
	}

}


package abstractFactory;

public class Pear implements Fruit {

	@Override
	public String getFruitName() {
		// TODO Auto-generated method stub
		return "This is pear";
	}

}


测试类:
package abstractFactory;

public class AbstractFactoryDemo {

	public static void main(String[]args){
		CreatorFactory fac=new ConcreteCreatorFactory1();
		System.out.println("ConcreteCreatorFactory1 Instance generate the following Instances");
		System.out.println(fac.getFoodInstance().getFoodName());
		System.out.println(fac.getFruitInstance().getFruitName());
		
		fac= new ConcreteCreatorFactory2();
		System.out.println("ConcreteCreatorFactory2 Instance generate the following Instances");
		System.out.println(fac.getFoodInstance().getFoodName());
		System.out.println(fac.getFruitInstance().getFruitName());
	}
}


说明:Food接口对应类 Egg Bread;Fruit接口对应类Apple Pear.具体工厂1负责创建Bread或是Apple实例;具体工厂2负责创建Egg或是Pear实例。这样的话 如果只需要Bread或是Apple实例,就可以只用具体工厂1去实现;要另外一组的话 只需要用具体工厂2去创建。而对抽象工厂来说,它不需要关注那一个具体工厂去实现。这样的话就有了更高层次的封装,也满足了开闭原则。

  • 大小: 36.8 KB
  • 大小: 36.8 KB
分享到:
评论

相关推荐

    菜鸟教程设计模式之工厂模式代码整理

    在这个"菜鸟教程设计模式之工厂模式代码整理"中,我们将深入探讨工厂模式的基本概念、结构以及如何在实际编程中应用。 工厂模式的核心思想是通过一个专门的工厂类来创建对象,而不是让客户端代码直接实例化具体的...

    Java设计模式菜鸟系列教程

    Java设计模式菜鸟系列教程 本教程对Java 23种设计模式进行了总结,涵盖了策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式、单例模式、命令模式、适配器模式、外观模式、模板方法模式、迭代器模式、...

    菜鸟教程设计模式之工厂模式代码整理(反射机制改进版)

    在这个“菜鸟教程设计模式之工厂模式代码整理(反射机制改进版)”中,我们主要探讨的是如何利用Java的反射机制来进一步增强工厂模式的功能。 首先,理解工厂模式的基本概念。工厂模式属于创建型设计模式,它提供了...

    设计模式学习经典篇之菜鸟篇

    本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...

    23种设计模式知识要点.pdf

    抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 抽象工厂模式(AbstractFactoryPattern): 抽象工厂模式是创建型模式,它提供了一个接口用于创建一组相关或相互依赖的对象,...

    23种设计模式知识要点.pdf_设计模式_

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

    深入浅出设计模式(.PDF)

    创建型设计模式如单例模式、工厂方法模式、抽象工厂模式等,它们关注的是对象的创建过程,使得代码更加灵活,易于维护和扩展。结构型设计模式如适配器模式、桥接模式、装饰器模式、组合模式、外观模式、享元模式和...

    设计模式笔记

    抽象工厂模式则是创建一系列相关或相互依赖的对象,它提供一个接口来创建一组相关的产品,而无需指定具体的实现。比如爷爷带孙子去KFC,抽象工厂负责创建一系列相关的产品(如汉堡、薯条等)。抽象工厂模式同样遵循...

    C#23种设计模式【完整】(亲测可用)

    2. 抽象工厂模式(Abstract Factory Pattern):为创建一组相关或相互依赖的对象提供一个统一的接口,而无需指定它们的具体类。 3. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点...

    NET 设计模式

    5、抽象工厂模式 6、状态模式 7、适配器模式 8、备忘录模式 9、组合模式 10、简单工厂模式 11、迭代器模式 12、单例模式 13、桥接模式 14、命令模式 15、职责链模式 16、中介者模式 17、享元模式 18、解释器模式 19...

    Java设计模式(单例+工厂+策略模式)

    **策略模式** 属于行为设计模式,定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用它的客户。例如,我们可以定义一个策略接口和多个实现策略的类: ```java interface ...

    23种软件设计模式简述

    2. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 3. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。 4. **建造者模式**:将一个复杂对象的构建与其...

    Java之美[从菜鸟到高手演变]之设计模式

    总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式...

    菜鸟学设计模式(28天)[收集].pdf

    在IT软件开发领域,设计模式是解决常见问题的成熟方案,是经验的总结,能够帮助开发者写出更加灵活、可维护的代码。以下是对标题和描述中提到的设计模式及相关原则的详细解释: 1. **开放——封闭原则(OCP)**: ...

    百度地图毕业设计源码-Design-Patterns:设计模式

    本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 企业级项目实战(带源码)地址: 23种模式java实现...

    设计模式整理

    - 抽象工厂模式(Abstract Factory):为创建一系列相关或相互依赖的对象提供了一个接口,而无需指定它们具体的类。它适用于当系统需要独立于产品的创建、组合和表示时。 - 建造者模式(Builder):将一个复杂对象的...

    java常用数据结构及算法集锦

    抽象工厂模式 原型模式 建造者模式 结构模式 代理模式 外观模式 适配器模式 装饰模式 组合模式 享元模式 桥接模式 行为模式 观察者模式 模板方法模式 策略模式 命令模式 调停者模式 备忘录模式 解释器模式 迭代器...

    菜鸟虚怀项目Java笔试题

    8. **设计模式**:了解常见设计模式如单例模式、工厂模式、装饰者模式、观察者模式,并能在实际编程中应用。 9. **JVM**:内存模型、垃圾回收机制、类加载机制等,理解JVM对程序性能的影响。 10. **数据库操作**:...

    资料库,关于面向对象以及4大特性,8大原则,24设计模式

    1. 创建型模式:单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)、原型(Prototype)。 2. 结构型模式:适配器(Adapter)、装饰器(Decorator)、代理(Proxy)...

Global site tag (gtag.js) - Google Analytics