
设计模式
文章平均质量分 50
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
吴晓如
这个作者很懒,什么都没留下…
展开
-
里氏转换原则
问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。例子:两数相减的功能,由类A完成:class Program { static void Main(string[] args)原创 2015-12-28 19:12:14 · 1442 阅读 · 28 评论 -
依赖倒置原则
问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。例子:PC里如果C原创 2016-01-02 18:23:04 · 657 阅读 · 14 评论 -
开放封闭原则和接口隔离原则
开放封闭:问题由来: 在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案: 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。定义: 一个软件实体如类、模块和函数应该对扩展开放,原创 2016-01-05 09:21:15 · 1082 阅读 · 19 评论 -
迪米特法则
引言: 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。问题由来: 类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案: 尽量降低类与类之间的耦合。原创 2016-01-04 19:01:48 · 586 阅读 · 18 评论 -
上下机消费时间+职责链模式
介绍: 在大话中小菜和大鸟讨论加薪的问题--加薪非要老总批?这里设计到权限的问题,需要判断是否有权利进行处理,这就类似我们的下机消费时间,判断是否满足各个阶段时间。定义: 职责链模式(Chain of Responsiblity)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为原创 2016-03-16 20:43:37 · 745 阅读 · 37 评论 -
机房合作--状态模式应用
引言: 之前老师说过遇到问题尽量不要看提高班同学写的博客,太有针对性,现在发现即使看了这些博客,也不一定能弄得出来,真的是太考验我们的逻辑和耐心,经过这几天的研究在上机的时候用上了状态模式。简介: 上机的时候需要判断卡号是否存在、是否使用、是否正在上机、余额是否大于至少消费金额,这一系列的判断可以运用状态模式。定义:状态模式(State):UML原创 2016-05-15 10:09:54 · 928 阅读 · 30 评论 -
组合查询+模板方法模式
引言: 经过第一遍机房收费系统中组合查询的实现,我们都知道组合查询中的代码比较多,而且大部分都是重复的,再一次机房收费,我们需要不断改进,避免重复代码,这时我们想到了设计模式中的模板方法。介绍: 还记得刚开始小菜跟大鸟讲的故事--考题抄错也白搭,每个学生都要抄一遍提然后写答案,提抄错了,答案自然就错了,为了避免这种情况,想到了老师出一份试卷,打印多份,学生填写答案就o原创 2016-03-16 09:27:48 · 910 阅读 · 38 评论