06 2009 档案

摘要: 《几道面试题,大家看看》——题1解 题目 需求如下: 1, 购物平台有几个非常重要的概念。商品,卖家,买家。 2, 卖家可以修改自己某个商品的价格,这个价格变动简称为一条商品消息。 3, 买家有订阅商品消息的功能,一旦这个商品的价格发生变动,会立刻通知给买家。 4, 当然,买家也有取消某个商品消息订阅的功能。这样以后商品价格变动了,就不会通知到买家了。 阅读全文
posted @ 2009-06-23 23:34 Old 阅读(2246) | 评论 (40) 编辑
摘要: 重新查看代码清单1-1中的代码,一共调用了 Regex 类的 Replace 方法17次。从代码清单1-3中可以看出,执行代码清单1-1中的ReplaceHtmlTag 方法需要实例化 17个 Regex 对象。如果考虑一个应用在执行一次时需要调用 ReplaceHtmlTag 方法100次,那么就会在内存中实例化 17*100 个对象。如果 Regex.Replace 方法处理的字符串比较小,那么大多数的时间会花费在创建一个新的Regex对象的开销上。这样做显然是不值得的。那有什么方法可以避免不用实例化这么多的对象吗?阅读全文
posted @ 2009-06-23 15:11 Old 阅读(2954) | 评论 (14) 编辑
摘要: FACTORY 模式 ——《敏捷软件开发 原则、模式与实践(c#版)》第29章 柯立芝(1872-1933)美国前总统 那个建造工厂的人建造了一座宇宙...... 依赖倒置原则(DIP)告诉我们应该优先依赖于抽象类,而避免依赖于具体类。当这些具体类不稳定时,更应该如此。因此,下面的代码片段违反了这个原则:阅读全文
posted @ 2009-06-19 15:58 Old 阅读(304) | 评论 (5) 编辑
摘要: HttpRequest.Item 属性 和 HttpRequest.QueryString 属性的区别!阅读全文
posted @ 2009-06-18 17:17 Old 阅读(249) | 评论 (2) 编辑
摘要: ACTIVE OBJECT 模式 ——《敏捷软件开发 原则、模式与实践(c#版)》第21章 ACTIVE OBJECT 模式是建立在COMMAND模式的基础上。这是实现多线程控制的一项古老的技术。该模式有多种使用方式,为许多工业系统提供了一个简单的多任务核心。阅读全文
posted @ 2009-06-18 16:29 Old 阅读(394) | 评论 (1) 编辑
摘要: COMMAND 模式 ——《敏捷软件开发 原则、模式与实践(c#版)》第21章 描述 COMMAND模式是最简单、最优雅的模式之一。 如图1-1所示,COMMAND模式简单的几乎可笑。该模式仅由一个具有唯一方法的接口组成,这似乎很荒谬?代码1-1 给出了图1-1对应的代码。阅读全文
posted @ 2009-06-18 14:09 Old 阅读(998) | 评论 (3) 编辑
摘要: Command模式的实践主题 文章将通过一个简单的 Shell 库来阐述 Command模式的一个实际应用。如何使用 Shell 库 在开始之前,我们先来看看如何使用这个 Shell 库。 解决方案结构如(图1-1)图1-1 解决方案 从图上可以看出,该 Shell 库非常的简单。其中 ICommand 接口定义了只定义了一个Execute 方法,该方法的签名见代码清单 1-1.代码清单 1-1Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->阅读全文
posted @ 2009-06-17 13:23 Old 阅读(7) | 评论 (0) 编辑
摘要: 《敏捷软件开发 原则、模式与实践(c#版)》 第11章 DIP:依赖倒置原则 传统的软件开发方法,比如结构化分析和设计,总是倾向于创建一些高层模块依赖于低层模块、策略依赖于细节的软件结构。实际上这些方法的目的之一就是要定义子程序层次结构,该层次结构描述了高层模块怎样调用低层模块。然而一个设计良好的面向对象的程序,其依赖程序结构相对于传统的过程式方法设计的通常结构而言就是被“倒置”了。阅读全文
posted @ 2009-06-17 10:09 Old 阅读(1057) | 评论 (7) 编辑
摘要: 从表面上看,委托似乎很容易使用:用C#的delegate关键字来定义,用我们都熟悉的new操作符来构造委托实例,用我们熟悉的方法调用语法来调用回调函数(不过要用引用了委托对象的变量来代替方法名)。 然而,实际情况比前面几个例子所演示的复杂得多。编译器和CLR做了大量的幕后工作来隐藏复杂性。本节将集中讲解编译器和CLR是如何实现委托的。掌握这些知识有助于我们理解委托,并学会如何更好地使用它们。与此同时,本节还要适当地介绍委托的其它一些特征。阅读全文
posted @ 2009-06-09 10:07 Old 阅读(2899) | 评论 (17) 编辑
摘要: 《敏捷软件开发 原则、模式与实践(c#版)》 第10章 LSP:LisKov替换原则 OCP背后的主要机制是抽象和多态。在静态类型语言中,比如C#,支持抽象和多态的关键机制之一是继承。正是使用了继承,我们才可以创建实现其基类中抽象方法的派生类。 是什么设计规则在支配着这种特殊的继承用法呢?最佳的继承层次的特征又是什么呢? 怎样的情况会使我们创建的类层次结构掉进不符合OCP的陷阱中去呢?这些正是LisKov替换原则(LSP)要解答的问题。阅读全文
posted @ 2009-06-06 11:06 Old 阅读(322) | 评论 (1) 编辑
摘要: 随想 ——通用权限 起源 看到园子里有人对通用权限的设计给出了很好的解决方案。但作为一个通用权限设计的悲观者,我还是过份担心中国式的用户需求。总觉得不能太倚靠这样的通用解决方案。虽然这些方案最大化的降低了项目实施人员部署的难度,但却是同步提高了项目权限设计的难度(如果已经使用了第三方的权限解决方案除外)。那我们到底需不需要通用权限设计呢?阅读全文
posted @ 2009-06-05 20:49 Old 阅读(2000) | 评论 (40) 编辑
摘要: 架构设计 ——项目日志管理系统 名词解释 架构:狭义的架构,这里指项目的组织结构。阅读全文
posted @ 2009-06-05 10:55 Old 阅读(934) | 评论 (2) 编辑
摘要: 用户故事 ——项目日志管理系统 故事描述时间:2009-06-04 阅读全文
posted @ 2009-06-04 17:09 Old 阅读(488) | 评论 (1) 编辑
摘要: 描述 考虑如下代码 Employee e = DB.GetEmployee("Bob"); if(e!=null && e.IsTimeToPay(today)) { e.Pay(); }阅读全文
posted @ 2009-06-04 14:53 Old 阅读(327) | 评论 (1) 编辑
摘要: 《敏捷软件开发 原则、模式与实践(c#版)》----第9章 OCP:开放--封闭原则----定义:"软件实体(类、模块、函数等)应该是可以扩展的,但是不可以修改。"(P93) 阅读全文
posted @ 2009-06-04 13:33 Old 阅读(229) | 评论 (3) 编辑
摘要: 《敏捷软件开发 原则、模式与实践(c#版)》--第8章 SRP:单一职责原则 -- “SRP:一个类应该只有一个发生变化的原因。”(P89) “在SRP中,我们把职责定义为变化的原因。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。” (P90)阅读全文
posted @ 2009-06-04 02:35 Old 阅读(263) | 评论 (0) 编辑