首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

简略工厂,工厂方法,抽象工厂的区别

2012-07-05 
简单工厂,工厂方法,抽象工厂的区别1,最初直接调用Class Client{MySqlConnection mysqlnew MySqlConnectio

简单工厂,工厂方法,抽象工厂的区别
1,最初直接调用

  Class Client{      MySqlConnection mysql=new MySqlConnection ();      DB2Connection db2=new DB2Connection();      OracleConnection oracle=new OracleConnection ();  }

Client端去调用MySqlConnection类获取连接,直接调用形成紧耦合。

2, 后来:简单工厂类
interace  IConnection{}Class  DB2Connection Implements IConnection{ }Class Factory {private  IConnection getConnection(String connectionKind){   Switch(connectionKind){   Case ”mysql”:    MySqlConnection mysql=new MySqlConnection ();    Break;   Case ”DB2”:    DB2Connection db2=new DB2Connection();     Break;   Case ” Oracle”:     OracleConnection oracle=new OracleConnection ();     Break;  }….}}Class Client{Public static void main(){    IConnection connection= Factory.getConnection(“db2”);}}

采用面向接口编程,分离抽象和实现是控制依赖耦合关系的有效方式.

3,工厂方法
abstaract class abstaractFactory{private  IConnection getConnection(String connectionKind);}Class DB2Factory exends abstaractFactory {  ….}}Class Client{Public static void main(){    IConnection connection= new DB2Factory();//再加oracle就新增一个oracle工厂类继承抽象工厂}}

工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行,你想要加功能,本来是改工厂类,而现在是修改客户端。这到底有什么好处?
4,再后来依赖注入。
Class Factory{   Private IConnection conn;   Private void setIConnection(){…}Private IConnection getIConnection(){….}}
配置文件:
<bean id=”factory” class=”Factory”>  <property name=”IConnection” value=”DB2Connection”/></bean>
这时候我们通过依赖注入将连接注入。依赖注入的基本思路是:切断服务类对其依赖的接口具体实现类的直接联系,服务类不直接创建依赖的具体对象,而由框架来注入。这样我们就消除了组件之间的直接联系,而把这些依赖转移到配置文件中进行定义,框架根据配置文件注入对象间的依赖。这就是依赖注入。

热点排行