设计模式之工厂模式

设计模式之工厂模式

今天写一下对工厂模式的理解:你想要买一辆车,而你不需要去了解它的具体过程是什么,只需要获得它既可。工厂模式就是这样,你只要说出你想要的东西,我就给你生产它。就像数据库的连接一样,你不需要去知道它内部是怎样连接的,只要知道它的名字,系统就会给你一个它的连接。具体的应用如hibernate的sessionFactory,需要dataSource,而dataSource就是它生产时所需要的一个参数。如下配置:

<bean id="dataSource">

<property name="driverClassName" value="${jdbc.driverClassName}"/>

<property name="url" value="${jdbc.url}"/>

<property name="username" value="${jdbc.username}"/>

<property name="password" value="${jdbc.passwd}"/>

</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

</bean>

举一个数据库的例子,代码:

package com.model.factory;


public interface DataBase { //定义一个接口,即定义工厂产生对象的公共行为
public void insert();
public void delete();
public void update();
public void search();
}


package com.model.factory;


public class MySQL implements DataBase{ //定义工厂所能产生的一些数据库类型,并实现它们的公共行为


@Override
public void insert() {
System.out.println("MySQL增加数据");
}


@Override
public void delete() {
System.out.println("MySQL删除数据");
}


@Override
public void update() {
System.out.println("MySQL修改数据");
}


@Override
public void search() {
System.out.println("MySQL查询数据");
}

}



package com.model.factory;


public class Oracle implements DataBase{


@Override
public void insert() {
System.out.println("Oracle增加数据");
}


@Override
public void delete() {
System.out.println("Oracle删除数据");
}


@Override
public void update() {
System.out.println("Oracle修改数据");
}


@Override
public void search() {
System.out.println("Oracle查询数据");
}

}



package com.model.factory;


public class SQLServer implements DataBase{


@Override
public void insert() {
System.out.println("SQLServer增加数据");
}


@Override
public void delete() {
System.out.println("SQLServer删除数据");
}


@Override
public void update() {
System.out.println("SQLServer修改数据");
}


@Override
public void search() {
System.out.println("SQLServer查询数据");
}

}


package com.model.factory;


public class DataBaseFactory { //创建工厂类
public DataBase getDataBase(String type){ //定义一个方法,根据输入的名称产生相应的数据库对象
if(type==null) return null;
if(type.equalsIgnoreCase("MySQL")){
return new MySQL();
}
if(type.equalsIgnoreCase("Oracle")){
return new Oracle();
}
if(type.equalsIgnoreCase("SQLServer")){
return new SQLServer();
}
return null;

}


测试:

public static void main(String[] args){
DataBaseFactory factory=new DataBaseFactory();
DataBase base=factory.getDataBase("MySQL"); //传入你所需的数据库类型,工厂会为你自动创建好你所需的数据库对象
base.insert();
base.delete();
base.update();
base.search();
}

结果:

MySQL增加数据
MySQL删除数据
MySQL修改数据
MySQL查询数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值