- 论坛徽章:
- 0
|
工厂模式:面向接口编程实现抽象工厂化DAO
例如:人员的增删改查Person
建立Person的POJO(Plain Old Java Object):
class PersonBO{}
建立Person的DAO接口:
interface PersonDAO{增删改查}
建立Person的abstract class PersonDAOFactory:
abstract class PersonDAOFactory{
static PersonDAOFactory getInstance()
{
读取数据库文件*.properties的dbname,jndi,transactionIsolation;
return (PersonDAOFactory)PersonOracleDAOFactory的实例;(符合properties文件)
}
public abstract PersonDAO getPersonDAO();
}
建立Person的OracleDAO:
class PersonOracleDAO implements PersonDAO{增删改查实现}
建立Person的OracleDAOFactory:
class PersonOracleDAOFactory extends PersonDAOFactory
{
PersonDAO getPersonDAO()
{
return new PersonOracleDAO();
}
}
关系(图3.1.4):
PersonOracleDAO(class)
PersonDAOFactory(abstract class)
PersonDAO(interface)
PersonOracleDAOFactory(class)
interface PersonDAO PersonDAOFactory
| |
| |
| |
| |
class PersonOracleDAO
图3.1.4 面向接口编程实现抽象工厂化DAO
工厂模式:提供创建对象的接口,所谓工厂模式就是将对象的new过程分离出来,满足当同一个产品后来修改的需要,不会影响到其他产品。
例子:
Sample mysample=new MySample();
Sample hissample=new HisSample();
其中Sample是MySample与HisSample的接口。
工厂方法:隐藏实现的细节。
例子:
public class Factory{
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
如果要实例化Sample时.就使用
Sample sampleA=Factory.creator(1);
这样,在整个就不涉及到Sample的具体子类,达到封装效果,也就减少错误修改的机会。
抽象工厂:将Factory变成抽象类,满足工厂定制不同品种的需要(产品多样化、复杂化)。
例子:
public abstract class Factory{
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory{
public Sample creator(){
.........
return new SampleA
}
public Sample2 creator(String name){
.........
return new Sample2A
}
}
public class BombFactory extends Factory{
public Sample creator(){
......
return new SampleB
}
public Sample2 creator(String name){
......
return new Sample2B
}
}
这样做的好处:
1) 通过工厂模式PersonOracleDAOFactory对PersonDAO进行定制,以适应数据库需求的变化(ORACLE和DB2),而且不同的数据库类型的DAO是不一样的。这里主要被体现在抽象工厂模式。正应了那句话:传统编码过程中,引入一个接口,往往也意味着同时要引入一个Factory类,也许还有一个额外的配置文件及其读写代码。
2) 面向接口编程,PersonDAO(interface)是PersonOracleDAO(class)的接口,接口PersonDAO定制了该DAO的功能,接口中规范了所有的功能方法,给调用着标明了自己的功能列表,是模块间实现低耦合的重要方式。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25102/showart_323089.html |
|