elegant coding
elegant coding with c#, Oracle, delphi and java

导航

 
http://www.cnblogs.com/dotnet2004/archive/2004/11/30/71066.html?Pending=true#Post

看了这个贴子, 看来很多应用都要求同时支持多种数据库.

我采用Adapter PatternIOC的Dependency Injection Pattern做过这种设计, 施行过程大概是这样的,

不一上来就做框架, 先用其中一个provider做几个通用的test case, 比如用SQLClient调用Stored proc, query, insert.. 然后用Refactorting里的Extract Interface方法, 先做一个DBAdapter interface, 再做一个类SQLClientAdapter把test case里所有和 SQLClient相关的操作都提取出来, 做为DBAdapter和SQLClientAdapter的方法, 如果你的应用需要访问oracle, 再做一个OracleClientAdapter, 实现DBAdapter 的所有方法.


这样一来你的程序只需要用到DBAdapter interface, 然后用IOC的Dependency Injection Pattern方法创建 DBAdapter(可以用spring.netpico.net),  这样你就可以通过修改配置文件来切换adapter了.

当然也可以用Factory Method Pattern的方法来配置Adapter, 不过始终需要修改code, IOC其实是对Factory Method Pattern的一种加强, 并且他还可以替换Singleton PatternPrototype Pattern

 

 

posted on 2004-12-02 22:49  yyanghhong  阅读(1059)  评论(1编辑  收藏  举报