`
lvwenwen
  • 浏览: 958729 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

java设计模式之抽象工厂模式(创建型模式)

阅读更多

 

package com.createtype.desginpatterns.facotry.abstractfactory;
// DAO工厂  
//定义DAO工厂接口与实现(利用java反射机制生产出你需要的DAO如:userDAO,roleDao)
abstract class AbstractDaoFactory {  
    public static AbstractDaoFactory getInstance(String classname) {  
        AbstractDaoFactory dao = null;  
        try {  
            dao = (AbstractDaoFactory) Class.forName(classname).newInstance();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return dao;  
    }  
  
    abstract IuserDao getuserdao();  
  
    abstract IroleDao getroledao();  
}  
  
// Oralce工厂  
class OracleFactory extends AbstractDaoFactory {  
    public IroleDao getroledao() {  
        return new OracleroleDao();  
    }  
    public IuserDao getuserdao() {  
        return new UserDaoImp();  
    }  
}  
  
// MySql工厂  
class MysqlFactory extends AbstractDaoFactory {  
    public IroleDao getroledao() {  
        return new MySqlroleDAO();  
    }  
    public IuserDao getuserdao() {  
        return new MySqluserDao();  
    }  
}  

package com.createtype.desginpatterns.facotry.abstractfactory;
//定义配置文件
//配置文件可以定义到XML中去(好处:修改配置项之后不需要对JAVA文件进行编译.)
class Config {  
    // Oralce  
    static final String ORALCE = "org.abc.OracleFactory";  
  
    static final String MYSQL = "org.abc.MysqlFactory";  
}  

package com.createtype.desginpatterns.facotry.abstractfactory;

// 角色表DAO接口  
//1.首先定义相关接口(与平常的做法没什么区别)
interface IroleDao {
	void insert();

	void update();
}

// 用户表DAO接口
interface IuserDao {
	void find();

	void delete();
}

package com.createtype.desginpatterns.facotry.abstractfactory;

// 用户表Oralce数据库DAO  
//不同的数据库有不同的SQL语句所以实现时必须分数据库来实现
//这里增加了一套DAO的实现 (与平时有所不同,如果有10个数据库就要加上10种不同的实现,比较麻烦呀
class UserDaoImp implements IuserDao {
	public void delete() {
		System.out.println("Oralce 删除用户表数据");
	}

	public void find() {
		System.out.println("Oralce 查询用户表数据");
	}
}

// 用户表MySql数据库DAO
class MySqluserDao implements IuserDao {
	public void delete() {
		System.out.println("MySql 删除用户数据");
	}

	public void find() {
		System.out.println("MySql 查询用户数据");
	}
}

// 角色表Oracle数据库DAO
class OracleroleDao implements IroleDao {
	public void insert() {
		System.out.println("Oralce 对角色表插入数据");
	}

	public void update() {
		System.out.println("Oracle 对角色表更新数据");
	}
}

// 角色表MySql数据库DAO
class MySqlroleDAO implements IroleDao {
	public void insert() {
		System.out.println("MySql 对角色表插入数据");
	}

	public void update() {
		System.out.println("Mysql 对角色表更新数据");
	}
}

package com.createtype.desginpatterns.facotry.abstractfactory;
/**
 *  总结:
	使用条件:一系列接口有一系列的实现
	如上IuserDao、IroleDao等一系列的接口,他们可以有一系列的实现(Oracle方式、MySql方式)
	OracleuserDao、OracleroleDao、MySqluserDao、MySqlroleDAO
	组成元素(以上面例子)
	一系列接口:IuserDao、IroleDao
	一系列实现:Oracle系列、MySql系列
	系列工厂类:Oracle系列工厂类、MySql系列工厂类(必须继承抽象工厂类)
	抽象工厂类:DaoFactory
	简单工厂模式也是一个应用很广泛的模式,但是可扩展性没有工厂方法模式高。
 */
/**
 * 工厂方法与抽象工厂的区别:
 * 工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。   
一个抽象工厂类,可以派生出多个具体工厂类。   
每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。   
一个抽象工厂类,可以派生出多个具体工厂类。   
每个具体工厂类可以创建多个具体产品类的实例。   

简单工厂模式:
    
区别:
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。   
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
 */
public class Test {  
    public static void main(String[] args) {  
        AbstractDaoFactory.getInstance(Config.ORALCE).getroledao().insert();  
        AbstractDaoFactory.getInstance(Config.MYSQL).getroledao().insert();  
    }  
  
}  
分享到:
评论

相关推荐

    JAVA设计模式之抽象工厂

    **JAVA设计模式之抽象工厂** 在软件工程中,设计模式是一种通用的解决方案,用来解决在特定上下文中反复出现的问题。抽象工厂(Abstract Factory)模式是其中一种创建型设计模式,它提供一个创建对象的接口,但允许...

    JAVA设计模式之抽象工厂模式

    在"JAVA设计模式之抽象工厂模式"的示例中,可能会包含这些角色的实现以及如何在实际场景中应用抽象工厂模式的解释和示例代码。这个压缩包可能包含了详细的设计和实现,帮助学习者深入理解抽象工厂模式的工作原理及其...

    Java设计模式之抽象工厂模式

    总结来说,Java设计模式之抽象工厂模式是一种用来创建一系列相关对象的设计模式,它通过提供抽象工厂接口来隔离具体产品的创建,使系统具备更好的扩展性和封装性。在实际开发中,我们可以根据需求选择使用抽象工厂...

    java设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统有多个产品族,而每个产品族又有多个具体产品时,如何组织代码的问题。在Java中,抽象工厂模式提供了一种创建对象组的方式,使得这些对象属于...

    Java设计模式-抽象工厂

    **Java设计模式——抽象工厂** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图。抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这...

    JAVA设计模式之抽象工厂模式案例

    抽象工厂模式是软件设计模式中的一种,属于创建型模式,它提供了一种创建对象组族的接口,而无需指定其具体类。这种模式的关键在于抽象工厂,它定义了一组产品对象的接口,并且允许子类根据不同的实现来生产一系列...

    Java设计模式之抽象工厂模式.zip

    通过阅读《Java设计模式之抽象工厂模式.pdf》这份文档,你可以更深入地理解抽象工厂模式的原理、实现方式以及如何在Java项目中应用这一模式。文档中可能涵盖了模式的优缺点、实例分析、与其他设计模式的比较等内容,...

    探索Java设计模式:工厂模式与抽象工厂模式的比较

    工厂模式和抽象工厂模式是两种常用的创建型设计模式,它们在Java中有着广泛的应用。本文将详细探讨这两种模式的区别,并提供代码示例来加深理解。 工厂模式和抽象工厂模式都是创建型设计模式,它们提供了代码解耦和...

    Java设计模式之抽象工厂模式.docx

    抽象工厂模式是设计模式中的一种,属于创建型模式,它为创建一组相关或相互依赖的对象提供了一个统一的接口,使得客户端无需关注这些对象的具体实现细节,仅需与抽象工厂交互即可。这种模式遵循开放封闭原则(OCP)...

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

    工厂模式是一种常用的软件设计模式,它是创建型设计模式的一种,主要解决对象的创建问题,将对象的创建过程封装起来,使得创建过程独立于使用过程。这样可以提高代码的可复用性和灵活性,同时降低了系统的耦合度。...

    java常用设计模式-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式...

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

    在Java编程中,工厂模式是一种非常重要的设计模式,它属于创建型模式,主要用于对象的创建。本文将深入探讨Java中的工厂模式,包括基本的工厂模式、抽象工厂模式以及工厂方法模式。 **工厂模式**:工厂模式的核心...

    3.java设计模式-创建者模式-抽象工厂模式.pdf

    抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...

    JAVA设计模式研究之抽象工厂模式

    【JAVA设计模式研究之抽象工厂模式】 设计模式是软件工程中的重要概念,它们代表了在特定情境下解决常见问题的最佳实践。面向对象编程中的设计模式,如抽象工厂模式,是提高代码可重用性和可维护性的关键。抽象工厂...

    Java设计模式之抽象工厂模式.pdf

    抽象工厂模式是设计模式中的创建型模式,它为创建一系列相关或相互依赖的对象提供了一个统一的接口,使得客户端在使用这些对象时,无需关注它们的具体实现细节。这种模式的核心在于,它将对象的创建与使用分离,增强...

    Java设计模式教程 - Java设计模式 - 抽象工厂模式

    抽象工厂模式是Java设计模式中的一种创建型模式,它提供了创建对象族的接口,而具体的对象族由子类决定。这种模式的主要目的是隔离接口与实现,使得客户端代码在更换产品族时无需修改,增强了软件的可扩展性和可维护...

Global site tag (gtag.js) - Google Analytics