当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: MyMSDNTVLibrary (http://blog.joy
 

 

 ·asp分页    »显示摘要«
    摘要: asp分页 <table width="100%" border="0" cellspacing="0" cellpadding="0" class="t1"> <tr> <td colspan="5" valign="top&q......
 ·ieee 802? groups - public web sites    »显示摘要«
    摘要: ieee 802® groups - public web sites 802 802.1 802.2 802.3 802.4 802.5 802.6 802.7 802.8 802.9 802.10 802.11 802.12 802.14 802.15 802.16 802.17 802.18 802.19 8......


[收藏]用Factory Method模式扩展MyMSDNTVLibrary
mymsdntvlibrary (http://blog.joycode.com/musicland/posts/13776.aspx) 是我以前写的一个小型winforms项目,当时的想法是为初学者们演示如何创建一个简单但却完整的小项目.很多朋友都对这个简单的小东西很感兴趣,西安的一位朋友在看着源码重新做了一遍之后,甚至还自己增加了添加tv的新功能.这让我感到非常欣慰.

【程序编程相关:样式中的特殊字符

【推荐阅读:ASP.NET编程中的十大技巧(转载)

正好最近又复习了一遍设计模式,我开始重新审视原有的应用程序结构,发现了一些应该改进的地方.比如说,我在写mymsdntvlibrary的第一个版本时就非常想让它能够很方便地支持不同种类的数据源,例如access.sql server,甚至是单纯的xml.我知道实现起来并不难,但怎样做才能最有效最有利于代码复用?想来想去,我决定在数据访问这一部分应用factory method模式. 【扩展信息:把Windows Media Playe

factory method是gof在design pattersn一书中给出的一种模式,gof为它做出的定义是:

define an interface for creating an object, but let subclasses decide which class to instantiate. factory method lets a class defer instantiation to subclasses.

简单来说,factory method的目的是想创建几个相似的(实现同一接口或继续同一父类)类中的某一个,为了达到这一目的,需要创建几个相似的creator类,通过creator类来决定创建哪一个所需的对象类.它的uml图示如下:

 

 

具体到这个项目来说,我需要针对不同的数据源来创建几个不同的dbhelper(我的个人习惯是通过dbhelper来封装针对特定的数据源的访问动作),如oledbhelper.sqldbhelper等,这些helper有非常相近的结构,因此可以让它们继续于同一接口——idbhelper.idbhelper的定义如下:

using system;

using system.data;

namespace musicland.msdntvlibrary.component

{

    public interface idbhelper

    {

        dataset getall();

    }

}

注意其中给出了一个有待实现的方法getall,通过实现类对该方法的调用,可以获得应用程序所需的全部数据.

接下来就是从idbhelper继续而来的两个具体数据访问辅助类.

oledbhelper:

using system;

using system.configuration;


...   下一页
 ·checkbox全选    »显示摘要«
    摘要:checkbox全选<head></head> <script language="javascript"> <!-- beginvar checkflag = "false";function check(field) {if (checkflag == "false") {for (i =......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE