惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
博客园 - 叶小钗
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
美团技术团队
aimingoo的专栏
aimingoo的专栏
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
The GitHub Blog
The GitHub Blog
小众软件
小众软件
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler
B
Blog RSS Feed
月光博客
月光博客
量子位
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
Y
Y Combinator Blog
B
Blog
MyScale Blog
MyScale Blog

博客园 - 雪美·考拉

创建自己的Web Helper 在WebMatrix中使用数据库 理解WebMatrix工作台(四) 理解WebMatrix工作台(三) 理解WebMatrix工作台(二) 理解WebMatrix工作台 使用模板创建站点 Web应用程序库 启动WebMatrix 建立你的第一个WebMatrix程序 WebMatrix的安装 Web栈介绍 模式的一次简单尝试 JavaScript中高效字符串拼接 MS.SQL Server 2005安装问题追踪总结 [导入]Flash CS4 初用体验 给总理的信 [导入]国外Flash源码的汉化问题 [导入]Windows XP下搭建IIS+PHP+MySql+Zend Debugger [导入]ADOBE CREATIVE SUITE 4 中文全套 [导入]Visual Studio 2008 对 JQuery 的智能感知支持!
[导入]重构出来的“简单工厂模式”
雪美·考拉 · 2009-02-26 · via 博客园 - 雪美·考拉

[导入]重构出来的“简单工厂模式”

热度: 做了事,然后碰到问题,改掉之前的——这很正常。但是如何能改的少,改的更巧,就成了技术领域一直在探究总结的。对于,程序的开发设计架构模式上,很多前人已经做过这方面的事情了,而这些事情现代人很是注重,并将之形成知识体系,这一体系慢慢构成了一个领域——设计模式(Design & Patterns)。 能够改的少,这就是低耦合的体现;能够改的巧,这则是封装的体现了。 我做Web开发,总要做个计数器吧,应该很Easy,这本身没啥好说的。可是想想数据放到那里呢?哪里都可以呀:文本文件、Xml、数据库文件(.mdb、.xls……)、数据库系统……,看着用呗!是啊,我就遇到过这样的问题,本来是放到Txt里的,后来领导说“要看到每天的分时统计”,需求的变化总是存在的,我是欢迎变化的——这样才证明我有可用的地方,不至于在经济危机时担心自己下岗吧;而且,更多的需求变化能够催使我完成更好更完善的系统。 恩,还放到Txt里也是没问题的,但是效率肯定没有数据文件好,不过先应付着吧,继续FSO编写代码来做每天的分时记录。但是,文本总是有文件大小的限制,所以采取保存2天的记录,然后删除之前的。呵呵,差点写死我,好后悔当初没用数据文件来做,相比之下用Xml也是很不错的选择!至少XPath能省我很大力气,比写正则式好多了,以后有机会再改吧! 凑合交上来任务!3天,没过3天,领导又来了“我看别人的网站能具体看到某天的历史记录,咱这个不行么?”我靠,你要当然行了——淡定!我是欢迎变化的需求的嘛………… 得,改吧,用Access吧!修改一番,总算消停2个月了!一件可怕的事情发生了,Web被挂马了,而当初*.mdb为了防止数据库被下载也改成了*.asp,完,也被挂上了!!!!再一杀毒,hoho~~~天知道,被杀后的Access文件头坏掉了!怎么发生挂马的先不提,立刻意识到:我咋当初就不用SqlServer呢!!!! 再改!!!好容易重写了一个Sql版的,这下可以放心了吧,单位以外通知“因数据库服务器资源紧张,以下部门不再提供数据库服务。”结果,我又是那个幸运的人!!!! ………… 上帝呀,虽然我不相信你的存在,但是我真想跟你要一个可以杀人的指标!我相信世界上不会有比我再衰的人了,但是这种反复无常的衰事人活着就总会碰到的。而这件给我的启发是:我能不能把之前所写过的那些不同数据源版本的东西都放到一起,然后客观环境变化时,你要啥我提供啥,但是只要做一点小的修改就好呢? 很快思路出来了: string DataProvide = "Sql"; switch (DataProvide.ToLower()) { case "sql": return Sql_DataProvide; case "txt": return Txt_DataProvide; case "mdb": return Mdb_DataProvide; } 但是,这么多类型怎么可以在一个函数里返回呢?呵呵,如果都是一家子就可以了对吧? 我们需要: public class DataProvide {}   public class Sql_DataProvide : DataProvide{} public class Txt_DataProvide : DataProvide {} public class Mdb_DataProvide : DataProvide{} 这样我们就可以,完善最一开始的代码了: public DataProvide SetConnection(string ProviderFlag) { switch (ProviderFlag.ToLower()) [...]
文章来源:http://www.e3card.cn/blog/?p=52

posted on 2009-02-26 22:56  雪美·考拉  阅读(256)  评论()    收藏  举报