`

工厂方法与抽象工厂的比较

阅读更多
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。  
                              一个抽象工厂类,可以派生出多个具体工厂类。  
                              每个具体工厂类只能创建一个具体产品类的实例。  
  抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。  
                              一个抽象工厂类,可以派生出多个具体工厂类。  
                              每个具体工厂类可以创建多个具体产品类的实例。  
   
  区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。  
              工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
 
下面是javaeye一位仁兄的列子:
抽象工厂代码
package com.tao.pattern.abstractFactory;  
 
public abstract class AbstractFactory {  
    /**  
     * 生成用户数据库操作类实例  
     *   
     * @return  
     */  
    public abstract UserDAO createUserDAO();  
 
    /**  
     * 生成角色数据库操作类实例  
     *   
     * @return  
     */  
   public abstract RoleDAO createRoleDAO();  
 

package com.tao.pattern.abstractFactory;

public abstract class AbstractFactory {
/**
* 生成用户数据库操作类实例
*
* @return
*/
public abstract UserDAO createUserDAO();

/**
* 生成角色数据库操作类实例
*
* @return
*/
public abstract RoleDAO createRoleDAO();

}

抽象工厂的hibernte实现代码
package com.tao.pattern.abstractFactory;  
 
public class HibernateFactory extends AbstractFactory {  
 
    @Override  
    public RoleDAO createRoleDAO() {  
        return new RoleDAOImplHibernate();  
    }  
 
    @Override  
    public UserDAO createUserDAO() {  
        return new UserDAOImplHibernate();  
    }  
 

package com.tao.pattern.abstractFactory;

public class HibernateFactory extends AbstractFactory {

@Override
public RoleDAO createRoleDAO() {
return new RoleDAOImplHibernate();
}

@Override
public UserDAO createUserDAO() {
return new UserDAOImplHibernate();
}


抽象工厂的toplink实现代码
package com.tao.pattern.abstractFactory;  
 
public class TopLinkFactory extends AbstractFactory {  
 
    @Override  
    public RoleDAO createRoleDAO() {  
        return new RoleDAOImplTopLink();  
    }  
 
    @Override  
    public UserDAO createUserDAO() {  
        return new UserDAOImplTopLink();  
    }  
 

package com.tao.pattern.abstractFactory;

public class TopLinkFactory extends AbstractFactory {

@Override
public RoleDAO createRoleDAO() {
return new RoleDAOImplTopLink();
}

@Override
public UserDAO createUserDAO() {
return new UserDAOImplTopLink();
}


角色数据库操作代码
package com.tao.pattern.abstractFactory;  
 
public interface RoleDAO { // 角色数据库操作  
    void save();  

package com.tao.pattern.abstractFactory;

public interface RoleDAO { // 角色数据库操作
void save();

角色数据库操作的hibernate实现代码
package com.tao.pattern.abstractFactory;  
 
public class RoleDAOImplHibernate implements RoleDAO {  
    @Override  
    public void save() {  
        System.out.println("RoleDAOImplHibernate save!");  
    }  

package com.tao.pattern.abstractFactory;

public class RoleDAOImplHibernate implements RoleDAO {
@Override
public void save() {
System.out.println("RoleDAOImplHibernate save!");
}

角色数据库操作的toplink实现代码
package com.tao.pattern.abstractFactory;  
 
public class RoleDAOImplTopLink implements RoleDAO {  
    @Override  
    public void save() {  
        System.out.println("RoleDAOImplTopLink save!");  
    }  

package com.tao.pattern.abstractFactory;

public class RoleDAOImplTopLink implements RoleDAO {
@Override
public void save() {
System.out.println("RoleDAOImplTopLink save!");
}

用户数据库操作接口代码
public interface UserDAO {  
    void save();  

public interface UserDAO {
void save();

用户数据库操作的hibernate实现代码
package com.tao.pattern.abstractFactory;  
 
public class UserDAOImplHibernate implements UserDAO {  
    @Override  
    public void save() {  
        System.out.println("UserDAOImplHibernate save!");  
    }  

package com.tao.pattern.abstractFactory;

public class UserDAOImplHibernate implements UserDAO {
@Override
public void save() {
System.out.println("UserDAOImplHibernate save!");
}
}
 
用户数据库操作的toplink实现代码
package com.tao.pattern.abstractFactory;  
 
public class UserDAOImplTopLink implements UserDAO {  
    @Override  
    public void save() {  
        System.out.println("UserDAOImplTopLink save!");  
    }  
分享到:
评论

相关推荐

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

    本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...

    工厂方法模式和抽象工厂模式的区别

    与工厂方法模式相比,抽象工厂模式更进一步,它提供了创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在抽象工厂模式中,不只一个产品类被创建,而是有一组相关的产品类。这种模式适用于当系统需要...

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

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

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

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

    工厂方法与抽象工厂设计模式

    工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式

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

    本文将深入探讨Java中的工厂模式,包括基本的工厂模式、抽象工厂模式以及工厂方法模式。 **工厂模式**:工厂模式的核心思想是提供一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,客户端无需...

    工厂方法和抽象工厂——Factory Method & Abstract Factory

    在软件设计模式中,工厂方法(Factory Method)和抽象工厂(Abstract Factory)是两种非常重要的创建型模式。它们主要用于解决对象实例化的问题,提供了一种封装对象创建过程的方法,使得代码更加灵活,易于扩展和...

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

    在软件设计模式中,"抽象工厂"、"工厂方法"和"简单工厂"都是创建型设计模式,它们都用于封装对象的创建过程,提供了一种间接的途径来创建对象,从而使得代码更加灵活,易于扩展。下面将详细介绍这三个工厂模式。 ##...

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

    工厂方法、简单工厂和抽象工厂是创建型设计模式的三种不同形式,它们都关注于对象的创建过程,但各有其特点和适用场景。 1. **工厂方法(Factory Method)**: 工厂方法模式定义了一个创建对象的接口,但让子类...

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

    工厂方法模式与抽象工厂模式的主要区别在于: 1. **复杂度**:工厂方法模式只关注一个产品的创建,而抽象工厂模式关注的是一个产品族的创建。 2. **灵活性**:工厂方法模式允许子类决定实例化哪个类,提供了更大的...

    简单工厂和抽象工厂的Demo

    在软件设计模式中,"简单工厂"和"抽象工厂"是两种常见的创建型设计模式,它们主要用于对象的创建。这两种模式都是为了将对象的创建过程封装起来,使得客户端代码无需关心具体的实现细节,只需调用工厂提供的接口即可...

    三种设计模式(简单工厂_工厂方法_抽象工厂)

    今天我们将深入探讨三种主要的设计模式:简单工厂、工厂方法和抽象工厂。 ### 简单工厂模式 简单工厂模式是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露创建逻辑。这个静态方法根据输入参数来...

    深入了解工厂模式&工厂方法&抽象工厂

    工厂模式分为三种主要形态:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式:也称为静态工厂方法模式,它通过一个静态方法来创建对象。在这个例子中,`FruitGardener` 类就是简单工厂,它根据输入的...

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

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

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

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

    抽象工厂模式代码

    通过抽象工厂模式,我们可以将产品对象的创建过程封装起来,使得客户端代码只需要与抽象工厂交互,而不关心具体的产品实现。这样可以提高代码的灵活性,当需要更换产品族或者添加新的产品族时,只需修改或添加新的...

    工厂方法、抽象工厂模式

    java 23种设计模式 工厂方法模式和抽象工厂模式,详细源码分析请看博客: http://blog.csdn.net/github_22022001/article/details/42100257 http://blog.csdn.net/github_22022001/article/details/42101157 ...

    抽象工厂模式uml类图

    java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式

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

    在软件设计模式中,工厂方法模式和抽象工厂模式是两种常用的创建型模式,它们都用于对象的创建,但各有特点和适用场景。首先,我们来理解这两种模式的基本概念。 **简单工厂模式**: 简单工厂模式是一种较为初级的...

    java工厂方法模式和抽象工厂模式实例

    根据描述,我们将深入探讨Java中的两种工厂模式:工厂方法模式和抽象工厂模式,并通过实例来理解它们的工作原理。 首先,我们来看**工厂方法模式**。这种模式定义了一个用于创建对象的接口,但让子类决定实例化哪一...

Global site tag (gtag.js) - Google Analytics