工厂模式之Simple Factory, Factory Method 以及Abstract Factory三种模式比较
以常用多种数据库访问层DAO为例, 三种模式代码分别为:
Simple Factory(简单工厂模式)
Simple Factory -- IDAO接口
package com.dzeay.pattern.simple_factory;
public interface IDAO {
public void execute();
}
Simple Factory -- Db2DAO
package com.dzeay.pattern.simple_factory;
public class Db2DAO implements IDAO {
@Override
public void execute() {
System.out.println("Db2DAO.execute");
}
}
Simple Factory -- OracleDAO
package com.dzeay.pattern.simple_factory;
public class OracleDAO implements IDAO {
@Override
public void execute() {
System.out.println("OracleDAO.execute");
}
}
Simple Factory -- Factory工厂类
package com.dzeay.pattern.simple_factory;
public class Factory {
public static IDAO createDAO(String type) {
if ("oracle".equals(type))
return new OracleDAO();
if ("db2".equals(type))
return new Db2DAO();
return null;
}
}
Simple Factory -- 测试类
package com.dzeay.pattern.simple_factory;
/**
* <pre>
* Simple Factory(简单工厂模式)详解:
*
* </pre>
*
* @author <a href="mailto:dzeay.com@gmail.com">dzeay.com</a>
* @since 2011-01-22
* @version 1.0
*/
public class TestClass {
/**
* @param args
*/
public static void main(String[] args) {
IDAO dao = Factory.createDAO("oracle");
dao.execute();
}
}
Factory Method(工厂方法模式)
Factory Method -- IDAO接口
package com.dzeay.pattern.factory_method;
public interface IDAO {
public void execute();
}
Factory Method -- Db2DAO
package com.dzeay.pattern.factory_method;
public class Db2DAO implements IDAO {
@Override
public void execute() {
System.out.println("Db2DAO.execute");
}
}
Factory Method -- OracleDAO
package com.dzeay.pattern.factory_method;
public class OracleDAO implements IDAO {
@Override
public void execute() {
System.out.println("OracleDAO.execute");
}
}
Factory Method -- Factory抽象工厂类
package com.dzeay.pattern.factory_method;
public abstract class Factory {
public abstract IDAO createDAO();
}
Factory Method -- Db2Factory
package com.dzeay.pattern.factory_method;
public class Db2Factory extends Factory {
@Override
public IDAO createDAO() {
return new Db2DAO();
}
}
Factory Method -- OracleFactory
package com.dzeay.pattern.factory_method;
public class OracleFactory extends Factory {
@Override
public IDAO createDAO() {
return new OracleDAO();
}
}
Factory Method -- 测试类
package com.dzeay.pattern.factory_method;
/**
* <pre>
* Factory Method(工厂方法模式)详解:
* 每个工厂完成一个产品的创建
* </pre>
*
* @author <a href="mailto:dzeay.com@gmail.com">dzeay.com</a>
* @since 2011-01-22
* @version 1.0
*/
public class TestClass {
/**
* @param args
*/
public static void main(String[] args) {
Factory factory = new OracleFactory();
IDAO dao = factory.createDAO();
dao.execute();
}
}
Abstract Factory(抽象工厂模式)
Abstract Factory -- IDAO接口
package com.dzeay.pattern.abstract_factory;
public interface IDAO {
public void insert();
}
Abstract Factory -- IUserDAO
package com.dzeay.pattern.abstract_factory;
public interface IUserDAO extends IDAO {
}
Abstract Factory -- Db2UserDAO
package com.dzeay.pattern.abstract_factory;
public class Db2UserDAO implements IUserDAO {
@Override
public void insert() {
System.out.println("Db2UserDAO.insert");
}
}
Abstract Factory -- OracleUserDAO
package com.dzeay.pattern.abstract_factory;
public class OracleUserDAO implements IUserDAO {
@Override
public void insert() {
System.out.println("OracleUserDAO.insert");
}
}
Abstract Factory -- IAdminDAO
package com.dzeay.pattern.abstract_factory;
public interface IAdminDAO extends IDAO {
}
Abstract Factory -- Db2AdminDAO
package com.dzeay.pattern.abstract_factory;
public class Db2AdminDAO implements IAdminDAO {
@Override
public void insert() {
System.out.println("Db2AdminDAO.insert");
}
}
Abstract Factory -- OracleAdminDAO
package com.dzeay.pattern.abstract_factory;
public class OracleAdminDAO implements IAdminDAO {
@Override
public void insert() {
System.out.println("OracleAdminDAO.insert");
}
}
Abstract Factory -- AbstractFactory抽象工厂
package com.dzeay.pattern.abstract_factory;
public abstract class AbstractFactory {
public abstract IUserDAO createUserDAO();
public abstract IAdminDAO createAdminDAO();
}
Abstract Factory -- Db2Factory
package com.dzeay.pattern.abstract_factory;
public class Db2Factory extends AbstractFactory {
@Override
public IUserDAO createUserDAO() {
return new Db2UserDAO();
}
@Override
public IAdminDAO createAdminDAO() {
return new Db2AdminDAO();
}
}
Abstract Factory -- OracleFactory
package com.dzeay.pattern.abstract_factory;
public class OracleFactory extends AbstractFactory {
@Override
public IUserDAO createUserDAO() {
return new OracleUserDAO();
}
@Override
public IAdminDAO createAdminDAO() {
return new OracleAdminDAO();
}
}
Abstract Factory -- 测试类
package com.dzeay.pattern.abstract_factory;
/**
* <pre>
* Abstract Factory(抽象工厂模式)详解:
* 每个工厂完成一系列产品的创建
* </pre>
*
* @author <a href="mailto:dzeay.com@gmail.com">dzeay.com</a>
* @since 2011-01-22
* @version 1.0
*/
public class TestClass {
/**
* @param args
*/
public static void main(String[] args) {
AbstractFactory factory = new OracleFactory();
IUserDAO userDAO = factory.createUserDAO();
IAdminDAO adminDAO = factory.createAdminDAO();
userDAO.insert();
adminDAO.insert();
factory = new Db2Factory();
userDAO = factory.createUserDAO();
adminDAO = factory.createAdminDAO();
userDAO.insert();
adminDAO.insert();
}
}
未完待续......
分享到:
相关推荐
这时,可以考虑使用更高级的工厂模式,如AbstractFactory(抽象工厂)或者FactoryMethod(工厂方法)。 在压缩包文件`SimpleFactory`中,很可能包含了实现上述结构的Java源代码文件,包括`Car`接口或抽象类、具体的...
本篇将详细讲解三种工厂模式:简单工厂模式、工厂方法模式和抽象工厂模式,以及它们在实际开发中的应用。 1. 简单工厂模式(Simple Factory Pattern) 简单工厂模式是工厂模式的最基础形式,通过一个公共的工厂类来...
Factory模式通常分为简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)三种主要类型。 1. **简单工厂**:这是最简单的形式,它包含一个静态方法,根据传入的参数返回特定类型...
以下是关于Java工厂模式的详细解释,以及它所包含的三种主要类型的工厂模式: 1. **简单工厂模式(Simple Factory Pattern)**: - 简单工厂模式是一种静态工厂方法模式,它包含一个静态工厂类,负责创建对象。在...
1、简单工厂模式(Simple Factory Pattern): 简单工厂模式通过一个工厂类来决定创建哪种具体类的实例。这个工厂类通常提供一个静态方法,根据传入的参数创建相应的对象。 2、工厂方法模式(Factory Method ...
"SimpleFactory" 是设计模式中的一种,通常称为简单工厂模式。它属于创建型设计模式,主要目的是提供一个创建对象的公共接口,让客户端可以不关心具体对象的创建过程,只需要知道所需对象的类型即可。这种模式简化了...
1. **简单工厂模式(Simple Factory)**:适用于需求较为简单的情况,主要负责创建一系列相关的对象。 2. **工厂方法模式(Factory Method)**:用于处理不同类型的对象创建过程,提供了一种接口来创建一系列相关或...
【Java设计模式之工厂模式Factory】是面向对象编程中一种重要的设计模式,它提供了一种创建对象的最佳方式。工厂模式的主要思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,使得代码更加灵活,易于...
本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并结合源码分析其应用场景和优缺点。 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的...
1. **简单工厂模式(Simple Factory Pattern)**:由一个静态方法来创建产品对象,它是最简单的工厂模式形式,但不利于扩展,因为静态方法不能被继承。 2. **工厂方法模式(Factory Method Pattern)**:定义一个...
2. `designpatterns_6_factory_abstractfactory_two` 和 `designpatterns_6_factory_abstractfactory` 显然是关于抽象工厂模式的,可能包含了抽象工厂模式的详细解释,以及两个不同的实现或者应用场景。 这些文件...
根据其特点,Factory工厂模式可以分为三种主要类型:简单工厂(Simple Factory)、工厂方法(Factory Method)以及抽象工厂(Abstract Factory)。 #### 二、简单工厂模式(Simple Factory) **定义:** 简单工厂模式是...
在Java编程领域,设计模式是一种解决常见问题的模板或...在阅读给定的博客文章《java设计模式之三大工厂模式》时,可以期待作者详细解析每种模式的结构、优缺点以及使用示例,帮助读者更好地理解和应用这些设计模式。
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 **1. 简单工厂模式(Simple Factory)** 简单工厂模式中,有一个中心工厂类负责创建对象。这个工厂类通常由一个静态方法构成,根据传入的...
3. **抽象工厂模式(Abstract Factory)**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 工厂模式在三层架构中的应用,尤其是在业务逻辑层,可以用来创建并管理对象,例如根据业务需求...
工厂模式有三种形式:简单工厂(Simple Factory)模式、工厂方法(Factory Method)模式和抽象工厂(Abstract Factory)模式。 二、简单工厂模式 2.1 简单工厂模式介绍 简单工厂模式(Simple Factory Pattern)又...
简单工厂模式、工厂模式和抽象工厂模式是软件设计中常见的三种设计模式,它们都属于创建型设计模式,用于解决对象的创建问题,特别是在需要根据不同的条件或者类型来创建对象时。 1. **简单工厂模式(Simple ...
在软件设计领域,工厂模式是一种广泛应用的创建型设计模式,其主要目的是为了封装对象的创建过程,使得客户端代码可以无须关心具体的对象是如何被创建的,只需要知道如何使用即可。工厂模式通过提供一个统一的接口...
2. **工厂方法模式 (Factory Method)**:相比于简单工厂模式,工厂方法模式将对象的创建过程委托给子类,这样每个子类可以决定创建哪种具体产品。这种方式更加灵活,易于扩展,但增加了类的数量。 3. **抽象工厂...