java设计模式_抽象工厂

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

/**
 * @Title: DatabaseFactory.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午12:03:46 
 * @version V1.0
 */
public interface DatabaseFactory {
    
    public User createUser();
    public Department createDepartment();

}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

/**
 * @Title: OracleFactory.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午2:15:54 
 * @version V1.0
 */
public class OracleFactory implements DatabaseFactory {

    @Override
    public User createUser() {
        return new OracleUserImp();
    }

    @Override
    public Department createDepartment() {
        return new OracleDepartmentImp();
    }

}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

/**
 * @Title: SqlServerFactory.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午2:15:35 
 * @version V1.0
 */
public class SqlServerFactory implements DatabaseFactory {

    @Override
    public User createUser() {
        return new SqlServerUserImp();
    }

    @Override
    public Department createDepartment() {
        return new SqlServerDepartmentImp();
    }

}

package com.wangbiao.design.abstractfactory;

/**
 * 
 * @Title: User.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午12:04:25 
 * @version V1.0
 */
public interface User {
    public void insertUser();
    public void selectUser();
}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

import com.wangbiao.design.abstractfactory.User;

/**
 * @Title: SqlServerUserImp.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午2:02:29 
 * @version V1.0
 */
public class SqlServerUserImp implements User {

    @Override
    public void insertUser() {
        System.out.println("insert User using Sql Server ");
        
    }

    @Override
    public void selectUser() {
        System.out.println("select User using Sql Server ");
    }

}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

import com.wangbiao.design.abstractfactory.User;

/**
 * @Title: OracleUserImp.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午2:02:49 
 * @version V1.0
 */
public class OracleUserImp implements User {

    @Override
    public void insertUser() {
        System.out.println("insert User using Oracle ");
    }

    @Override
    public void selectUser() {
        System.out.println("select User using Oracle ");        
    }

}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

/**
 * @Title: Department.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午12:04:19 
 * @version V1.0
 */
public interface  Department {
    public void insertDepartment();
    public void selectDepartment();
}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

/**
 * @Title: OracleDepartmentImp.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午2:04:50 
 * @version V1.0
 */
public class OracleDepartmentImp implements Department {

    @Override
    public void insertDepartment() {
        System.out.println("insert Department using Oracle ");            
    }

    @Override
    public void selectDepartment() {
        System.out.println("select Department using Oracle ");            
    }

}

/**
 * 
 */
package com.wangbiao.design.abstractfactory;

/**
 * @Title: Client.java
 * @Package com.wangbiao.design.abstractfactory
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-26 下午12:03:00 
 * @version V1.0
 */
public class Client {

    public static void main(String[] args) {
        
        
        DatabaseFactory factory_oracel = new OracleFactory();
        User user_oracel = factory_oracel.createUser();
        Department depart_oracle = factory_oracel.createDepartment();
        
        user_oracel.insertUser();
        user_oracel.selectUser();
        depart_oracle.insertDepartment();
        depart_oracle.selectDepartment();
        
        
        DatabaseFactory factory_sqlserver = new SqlServerFactory();
        User user_sqlserver = factory_sqlserver.createUser();
        Department depart_sqlserver = factory_sqlserver.createDepartment();
        
        user_sqlserver.insertUser();
        user_sqlserver.selectUser();
        depart_sqlserver.insertDepartment();
        depart_sqlserver.selectDepartment();
        
    }

}
时间: 2024-10-12 02:26:33

java设计模式_抽象工厂的相关文章

大话设计模式_抽象工厂模式(Java代码)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. 简单描述:有多种抽象产品,并且每种抽象产品都有多个具体产品.一个抽象工厂,提供多个具体工厂,每个工厂则提供不同种类的具体产品. 大话设计模式中的截图: 例子代码: AbstractProductA类: 1 package com.longsheng.abstractfactory; 2 3 public abstract class AbstractProductA { 4 5 public abstract v

Java设计模式之抽象工厂(02)

对工厂方法进行抽象.当增加新的产品时,不用改动工厂类.而是集成已有的工厂接口或者抽象工厂,创建新的工厂.这就是对扩展开发,对修改封闭. 1 package Pak; 2 3 public abstract class Automobile { 4 public abstract void Run(); 5 } package Pak; public class Bus extends Automobile { @Override public void Run() { System.out.pr

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

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类.每个生成的工厂都能按照工厂模式提供对象. 步骤 1 为形状创建一个接口. 1 packagecom.demo.mode.mode01.abstractFactory.Shape.java 2 3 public interface

JAVA设计模式之抽象工厂模式 (转)

前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例. 例子背景: 随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件.于是这个工厂开始生产空调和发动机,用来组装汽车.这时候工厂有两个系列的产品:空调和发动机.宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B型号空调和B型号发动机. 概念: 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象.比如宝马320系列使用空调型号A和发动机型号A,而宝

设计模式_抽象工厂模式(Abstract Fcatory)

抽象工厂模式:创建一些列相关或者互相依赖的对象的接口,而无需指定他们具体的类, 1.创建工厂Factory: package patterns.design.factory; import java.io.InputStream; import java.util.Properties; public class DaoFactory { // 单例 private DaoFactory(){ try { // 读配置文件获得实现类 类名 Properties props = new Prope

浅谈JAVA设计模式之——抽象工厂模式(AbstractFactoty)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45440309 一.概述: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 二.为何使用     工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也

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

本文继续介绍23种设计模式系列之抽象工厂模式. 前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例. 例子背景: 随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件.于是这个工厂开始生产空调和发动机,用来组装汽车.这时候工厂有两个系列的产品:空调和发动机.宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B型号空调和B型号发动机. 概念: 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象.比如

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

抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类.每个生成的工厂都能按照工厂模式提供对象. 介绍 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 主要解决 主要解决接口选择的问题. 何时使用 系统的产品有多于一个的产品族,而系统只消费其中某一族的产品

04.设计模式_抽象工厂模式

转载自   http://www.cnblogs.com/zhili/p/AbstractFactory.html 一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性.但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的产品,如果我们要设计这样的系统时,工厂方法模式显然在