`
Kevin_Shen
  • 浏览: 16253 次
社区版块
存档分类
最新评论

简单工厂和抽象工厂模式的理解

阅读更多

  简单工厂方法,举例:有一个数据访问层的工厂类DAOFactory(接口),里面有各种数据库的实现,例如:OracleDAOFactory和MysqlDAOFactory,然后可以根据你在客户端的输入或者某个配置文件的信息:“ORACLE”或者"MYSQL",去创建属于自己需要的那个数据库实现:DAOFactory df = (DAOFactory)Class.forName("OracleDAOFactory类全名").newInstance();达到降低程序耦合性的目的。

 

 抽象工厂模式用法就相对复杂,例:我要进行农行ABC和工行ICBC的在线支付,每个在线支付有pay付款和verify验证俩个动作,但农行的支付是不能和工行的验证放一起的。coding说明:

 1、先定义抽象工厂:AbstractFactory(),里面俩个方法用于获得支付行为,和验证行为。

public interface AbstractFactory {
	public abstract PayAction createPayAction();
	public abstract VerifyAction createVerifyAction();
}

 

2、再定义俩个银行,实现抽象工厂:

public  class ABCFactory implements AbstractFactory{

	@Override
	public PayAction createPayAction() {
		// TODO Auto-generated method stub
		return new ABCPayAction();
	}

	@Override
	public VerifyAction createVerifyAction() {
		// TODO Auto-generated method stub
		return new ABCVerifyAction();
	}

}

 

public class ICBCFactory implements AbstractFactory{

	@Override
	public PayAction createPayAction() {
		// TODO Auto-generated method stub
		return new ICBCPayAction();
	}

	@Override
	public VerifyAction createVerifyAction() {
		// TODO Auto-generated method stub
		return new ICBCVerifyAction();
	}

}

 3、然后创建支付行为类,和验证行为类:

public interface PayAction{
	public void doPay();
}

 

public interface VerifyAction {
	public void doVerify();
}

 4、因为每个银行的支付信息和验证信息不同,所以农行行为和工行行为分别实现各自的支付动作和验证动作。

农行的支付和验证:

public class ABCPayAction implements PayAction {
	@Override
	public void doPay() {
		System.out.println("this is abc pay!");
		
	}

}

public class ABCVerifyAction implements VerifyAction{

	@Override
	public void doVerify() {
		System.out.println("this is abc verify!");
		
	}

}

 工行的支付和验证:

public class ICBCPayAction implements PayAction {
	@Override
	public void doPay() {
	System.out.println("this is icbc pay!");		
	}

}

public class ICBCVerifyAction implements VerifyAction {
	@Override
	public void doVerify() {
		System.out.println("this is icbc verify!");
	}
}

 5、然后消费者Buyer开始消费,创建消费者类:

public class Buyer {
	private PayAction pa= null;
	private VerifyAction va = null;
	public void doBuy(AbstractFactory af){
		this.pa = af.createPayAction();
		this.va =af.createVerifyAction();
		this.pa.doPay();
		this.va.doVerify();
	}
}

 6、都ok了,就开始客户端测试

public class Cilent {
	
	public static void main(String[] args) {
		Buyer b = new Buyer();
		b.doBuy(new ABCFactory());
		//b.doBuy(new ICBCFactory());

	}

}
结果:
this is abc pay!
this is abc verify!

 

分享到:
评论

相关推荐

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    抽象工厂模式则更进一步,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在多线程或者跨平台的C#应用中,抽象工厂可以帮助我们隔离产品族,使得更换产品族变得容易。例如,我们可以有...

    简单工厂-工厂方法-抽象工厂 对比总结

    简单工厂模式适用于快速原型开发或小型项目,而工厂方法和抽象工厂模式则更适合大型项目或需要高度灵活性的系统。理解并熟练运用这些设计模式,能够提高代码的可维护性和可扩展性,也是成为一名专业IT从业者必备的...

    抽象工厂模式+反射技术(抽象工厂模式+简单工厂模式)

    在某些情况下,我们可以将简单工厂作为抽象工厂的一个实现,或者在系统初期使用简单工厂,随着系统复杂性的增加逐步过渡到抽象工厂模式。 至于“仅仅是抽象工厂模式”,这意味着设计完全围绕着抽象工厂模式进行,...

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...

    简单工厂和抽象工厂的Demo

    抽象工厂模式通过定义多个工厂接口,每个接口对应一类产品,然后由具体的工厂类实现这些接口,以创建对应的实例。这样,客户端可以通过选择不同的工厂来获取不同系列的产品,而不需要知道具体的产品实现细节。这种...

    简单工厂模式、工厂模式、抽象工厂模式案例(C++实现)

    在这个压缩包中,包含了三种工厂模式的C++实现:简单工厂模式、工厂方法模式以及抽象工厂模式。让我们一一探讨这些模式。 1. 简单工厂模式: 简单工厂模式是一种静态工厂方法,它提供一个公共的工厂类来创建对象。...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    工厂方法模式和抽象工厂模式

    在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、...理解并合理运用抽象工厂模式,可以提升软件架构的质量,降低系统维护的成本。

    C++ 工厂模式 (简单工厂、工厂和抽象工厂)

    例如,在图形界面设计中,可以有Windows风格的按钮、文本框和滚动条,以及Mac OS风格的对应组件,抽象工厂模式可以确保在不修改客户端代码的情况下,统一更换整个应用程序的界面风格。 #### 六、实现与应用 在实际...

    设计模式之工厂方法、简单工厂、抽象工厂

    抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。它允许客户端创建一个产品族,其中每个产品都是同一类别中的一个实例,如创建GUI组件,可以同时为Windows和Mac OS提供对应的...

    Java 工厂模式 抽象工厂 工厂方法模式

    **抽象工厂模式**:抽象工厂模式是工厂模式的一种扩展,关注于创建相关或依赖对象的家族,而无需指定它们的具体类。它提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在Java中,抽象工厂模式...

    简单工厂模式,工厂方法模式,抽象工厂模式和Proxy模式

    从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...

    简单工厂模式,工厂方法模式,抽象工厂模式

    本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并结合源码分析其应用场景和优缺点。 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的...

    简单工厂模式和抽象工厂模式

    "简单工厂模式"和"抽象工厂模式"是两种非常重要的创建型设计模式,它们在对象创建过程中扮演着关键角色。 首先,我们来看简单工厂模式(Simple Factory Pattern)。它是一个类的工厂,负责创建对象,客户通过调用...

    设计模式抽象工厂实验报告

    1. **深入理解抽象工厂模式的基本概念和原理**:通过理论学习和实际操作,掌握抽象工厂模式的定义、组成以及工作原理。 2. **应用抽象工厂模式进行软件结构设计与实现**:通过具体案例(即开发一套界面皮肤库),...

    IOS 设计模式抽象工厂实例Demo

    在iOS开发中,设计模式是解决常见编程问题的模板,它们提供了一种标准的方法来组织代码,使得代码更易于理解、扩展和维护。...通过阅读和理解这些代码,开发者可以深入掌握抽象工厂模式在iOS开发中的实际应用。

Global site tag (gtag.js) - Google Analytics