工厂模式SpringBeanWord格式文档下载.docx

上传人:b****5 文档编号:21476195 上传时间:2023-01-30 格式:DOCX 页数:11 大小:17.39KB
下载 相关 举报
工厂模式SpringBeanWord格式文档下载.docx_第1页
第1页 / 共11页
工厂模式SpringBeanWord格式文档下载.docx_第2页
第2页 / 共11页
工厂模式SpringBeanWord格式文档下载.docx_第3页
第3页 / 共11页
工厂模式SpringBeanWord格式文档下载.docx_第4页
第4页 / 共11页
工厂模式SpringBeanWord格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

工厂模式SpringBeanWord格式文档下载.docx

《工厂模式SpringBeanWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《工厂模式SpringBeanWord格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

工厂模式SpringBeanWord格式文档下载.docx

Car>

cars=newArrayList<

();

//这种叫多例模式,连接池的概念

PrivateCar(){}//外部不能new

publicstaticCargetInstance(){

returncar;

}

publicvoidrun(){

System.out.println("

冒着烟奔跑中car......."

);

}

publicclassTest{

publicstaticvoidmain(String[]args){

Carc=Car.getInstance();

Carc2=Car.getInstance();

if(c==c2)System.out.println("

samecar"

m.run();

2简单工厂

1.2任意定制交通工具和其生产过程。

任意定制交通工具:

这个用到了接口的概念

publicinterfaceMoveable{

voidrun();

对于各种交通工具的生产过程也能都定制

publicclassCarFactoryextendsVehicleFactory{

publicMoveablecreate(){

returnnewCar();

工厂方法和单例模式有些冲突

3抽象工厂

getInstance方法,大多数都是静态工厂方法

在JDK之中很广泛的应用。

不仅开着车,还开着AK47,还吃着苹果。

手里面控制着产品非常非常多。

手里控制的一系列产品

控制着一系列产品的的替换,该怎么办,(套装)

工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准.

以开发项目的DAO层为例,在项目中客户的需求是常常变动的,临时更换数据库的需求也是常常发生的,那我们要如何解决跨数据库的功能,这里就要使用到抽象工厂模式了.工厂模式常常用于创建多系列化的对象(如Orale系列,MySql系列)

1.首先定义相关接口(与平常的做法没什么区别)

Java代码

//角色表DAO接口

interfaceIroleDao{

voidinsert();

voidupdate();

}

//用户表DAO接口

interfaceIuserDao{

voidfind();

voiddelete();

//角色表DAO接口

interfaceIroleDao{

//用户表DAO接口

interfaceIuserDao{

}2.不同的数据库有不同的SQL语句所以实现时必须分数据库来实现

//用户表Oralce数据库DAO

classOracleuserDaoimplementsIuserDao{

publicvoiddelete(){

System.out.println("

Oralce删除用户表数据"

}

publicvoidfind(){

Oralce查询用户表数据"

//用户表MySql数据库DAO

classMySqluserDaoimplementsIuserDao{

MySql删除用户数据"

MySql查询用户数据"

//角色表Oracle数据库DAO

classOracleroleDaoimplementsIroleDao{

publicvoidinsert(){

Oralce对角色表插入数据"

publicvoidupdate(){

Oracle对角色表更新数据"

//角色表MySql数据库DAO

classMySqlroleDAOimplementsIroleDao{

MySql对角色表插入数据"

Mysql对角色表更新数据"

//用户表Oralce数据库DAO

classOracleuserDaoimplementsIuserDao{

publicvoiddelete(){

publicvoidfind(){

//用户表MySql数据库DAO

classMySqluserDaoimplementsIuserDao{

//角色表Oracle数据库DAO

classOracleroleDaoimplementsIroleDao{

publicvoidinsert(){

publicvoidupdate(){

//角色表MySql数据库DAO

classMySqlroleDAOimplementsIroleDao{

这里增加了一套DAO的实现(与平时有所不同,如果有10个数据库就要加上10种不同的实现,比较麻烦呀)

3.定义DAO工厂接口与实现(利用java反射机制生产出你需要的DAO如:

userDAO,roleDao)

//DAO工厂

abstractclassDaoFactory{

publicstaticDaoFactorygetInstance(Stringclassname){

DaoFactorydao=null;

try{

dao=(DaoFactory)Class.forName(classname).newInstance();

}catch(Exceptione){

e.printStackTrace();

returndao;

abstractIuserDaogetuserdao();

abstractIroleDaogetroledao();

//Oralce工厂

classOracleFactoryextendsDaoFactory{

publicIroleDaogetroledao(){

returnnewOracleroleDao();

publicIuserDaogetuserdao(){

returnnewOracleuserDao();

//MySql工厂

classMysqlFactoryextendsDaoFactory{

returnnewMySqlroleDAO();

returnnewMySqluserDao();

//DAO工厂

abstractclassDaoFactory{

publicstaticDaoFactorygetInstance(Stringclassname){

try{

}catch(Exceptione){

//Oralce工厂

classOracleFactoryextendsDaoFactory{

publicIroleDaogetroledao(){

publicIuserDaogetuserdao(){

//MySql工厂

classMysqlFactoryextendsDaoFactory{

4.定义配置文件

classConfig{

//Oralce

staticfinalStringORALCE="

org.abc.OracleFactory"

;

staticfinalStringMYSQL="

org.abc.MysqlFactory"

classConfig{

//Oralce

配置文件可以定义到XML中去(好处:

修改配置项之后不需要对JAVA文件进行编译.)

5.测试你的输出的DAO

publicclassDao{

publicstaticvoidmain(String[]args){

DaoFactory.getInstance(Config.ORALCE).getroledao().insert();

DaoFactory.getInstance(Config.MYSQL).getroledao().insert();

publicclassDao{

总结

使用条件:

一系列接口有一系列的实现

如上IuserDao、IroleDao等一系列的接口,他们可以有一系列的实现(Oracle方式、MySql方式)

OracleuserDao、OracleroleDao、MySqluserDao、MySqlroleDAO

组成元素(以上面例子)

一系列接口:

IuserDao、IroleDao

一系列实现:

Oracle系列、MySql系列

系列工厂类:

Oracle系列工厂类、MySql系列工厂类(必须继承抽象工厂类)

抽象工厂类:

DaoFactory

4SpringBean工厂

产品系列方面

产品品种方面随意确定

为了调和,SpringBean工厂。

当你拿到任何类的子类的时候,

具体new什么请你写在配置文件里面把!

Property使用

Bean容器的模拟

1基于接口类型的任意定制!

2一定程度的生产过程的定制!

SpringIOCAOP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1