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

1,最初直接调用

Class Client{

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

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

[color=darkred]2[/color], 后来:简单工厂类

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”);
}
}

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

[color=darkred]3[/color],工厂方法

abstaract class abstaractFactory{
private IConnection getConnection(String connectionKind);
}

Class DB2Factory exends abstaractFactory {

….
}
}
Class Client{
Public static void main(){
IConnection connection= new DB2Factory();//再加oracle就新增一个oracle工厂类继承抽象工厂
}
}

[color=green][size=large]工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行,你想要加功能,本来是改工厂类,而现在是修改客户端。[/size][/color]这到底有什么好处?
4,再后来依赖注入。
Class Factory{
Private IConnection conn;
Private void setIConnection(){

}
Private IConnection getIConnection(){
….
}
}
配置文件:
<bean id=”factory” class=”Factory”>
<property name=”IConnection” value=”DB2Connection”/>
</bean>
这时候我们通过依赖注入将连接注入。[color=green][size=large]依赖注入的基本思路是:切断服务类对其依赖的接口具体实现类的直接联系,服务类不直接创建依赖的具体对象,而由框架来注入。这样我们就消除了组件之间的直接联系,而把这些依赖转移到配置文件中进行定义,框架根据配置文件注入对象间的依赖。这就是依赖注入。[/size][/color]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值