摘要:
COMMAND 模式
——《敏捷软件开发 原则、模式与实践(c#版)》第21章
描述
COMMAND模式是最简单、最优雅的模式之一。
如图1-1所示,COMMAND模式简单的几乎可笑。该模式仅由一个具有唯一方法的接口组成,这似乎很荒谬?代码1-1 给出了图1-1对应的代码。 阅读全文
摘要:
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/--> 阅读全文
摘要:
《敏捷软件开发 原则、模式与实践(c#版)》
第11章 DIP:依赖倒置原则
传统的软件开发方法,比如结构化分析和设计,总是倾向于创建一些高层模块依赖于低层模块、策略依赖于细节的软件结构。实际上这些方法的目的之一就是要定义子程序层次结构,该层次结构描述了高层模块怎样调用低层模块。然而一个设计良好的面向对象的程序,其依赖程序结构相对于传统的过程式方法设计的通常结构而言就是被“倒置”了。 阅读全文
摘要:
从表面上看,委托似乎很容易使用:用C#的delegate关键字来定义,用我们都熟悉的new操作符来构造委托实例,用我们熟悉的方法调用语法来调用回调函数(不过要用引用了委托对象的变量来代替方法名)。
然而,实际情况比前面几个例子所演示的复杂得多。编译器和CLR做了大量的幕后工作来隐藏复杂性。本节将集中讲解编译器和CLR是如何实现委托的。掌握这些知识有助于我们理解委托,并学会如何更好地使用它们。与此同时,本节还要适当地介绍委托的其它一些特征。 阅读全文
摘要:
《敏捷软件开发 原则、模式与实践(c#版)》
第10章 LSP:LisKov替换原则
OCP背后的主要机制是抽象和多态。在静态类型语言中,比如C#,支持抽象和多态的关键机制之一是继承。正是使用了继承,我们才可以创建实现其基类中抽象方法的派生类。
是什么设计规则在支配着这种特殊的继承用法呢?最佳的继承层次的特征又是什么呢? 怎样的情况会使我们创建的类层次结构掉进不符合OCP的陷阱中去呢?这些正是LisKov替换原则(LSP)要解答的问题。 阅读全文
摘要:
随想
——通用权限
起源
看到园子里有人对通用权限的设计给出了很好的解决方案。但作为一个通用权限设计的悲观者,我还是过份担心中国式的用户需求。总觉得不能太倚靠这样的通用解决方案。虽然这些方案最大化的降低了项目实施人员部署的难度,但却是同步提高了项目权限设计的难度(如果已经使用了第三方的权限解决方案除外)。那我们到底需不需要通用权限设计呢? 阅读全文
摘要:
架构设计
——项目日志管理系统
名词解释
架构:狭义的架构,这里指项目的组织结构。 阅读全文
摘要:
用户故事
——项目日志管理系统
故事描述时间:2009-06-04 阅读全文
摘要:
描述
考虑如下代码
Employee e = DB.GetEmployee("Bob");
if(e!=null && e.IsTimeToPay(today))
{
e.Pay();
} 阅读全文
摘要:
《敏捷软件开发 原则、模式与实践(c#版)》----第9章 OCP:开放--封闭原则----定义:"软件实体(类、模块、函数等)应该是可以扩展的,但是不可以修改。"(P93)
阅读全文
摘要:
《敏捷软件开发 原则、模式与实践(c#版)》--第8章 SRP:单一职责原则 --
“SRP:一个类应该只有一个发生变化的原因。”(P89)
“在SRP中,我们把职责定义为变化的原因。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。” (P90) 阅读全文
摘要:
使用 MySQL C API 访问 MySQL示例,包括对普通表的查询,存储过程的操作,试图的操作。 阅读全文