文档章节

java设计模式_抽象工厂

王大叔爱编程
 王大叔爱编程
发布于 2014/09/26 14:28
字数 375
阅读 148
收藏 7


/**
 * 
 */
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();
        
    }

}


© 著作权归作者所有

王大叔爱编程

王大叔爱编程

粉丝 34
博文 111
码字总数 61053
作品 0
成都
程序员
私信 提问
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗
2018/05/08
293
0
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
222
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之所...

路小磊
2018/07/21
3.1K
11
java中23种设计模式(上)

参考网址:http://blog.csdn.net/zhangerqing 资源:http://download.csdn.net/detail/zhangerqing/4835830 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用、多数...

青涩的梦
2018/06/26
0
0
Java设计模式之工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)

工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字。但在一些复杂的业务逻辑中,创建一个对象不只需要new一行代码就成了,可能需要一些列的初始化设置,或先创建一些...

渡劫锦官城
2018/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部