- 博客(12)
- 资源 (16)
- 收藏
- 关注
原创 设计模式六大原则(6):开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设计中
2012-02-27 08:48:41 114639 114
原创 设计模式六大原则(5):迪米特法则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做
2012-02-27 08:40:57 83014 63
原创 设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接
2012-02-27 08:32:29 86162 41
原创 有2n+1个数,其中有2n个数出现过两次,找出其中只出现一次的数
给出2n+1个数,其中有2n个数出现过两次,如何用最简便的方法找出里面只出现了一次的那个数。例如这样一组数3,3,1,2,4,2,5,5,4,其中只有1出现了1次,其他都是出现了2次,如何找出其中的1?最简便的方法是使用异或,代码如下:public class XOR { public static void main(String[] args){ int[] arr
2012-02-24 09:07:00 17836 28
原创 设计模式六大原则(3):依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接
2012-02-24 08:46:12 112218 104
原创 设计模式六大原则(2):里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型
2012-02-22 08:46:33 137131 109
原创 设计模式六大原则(1):单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也
2012-02-21 09:52:56 127555 125
原创 用博客见证自己的成长
感谢CSDN博客,给我提供了一个学习交流的平台,自从开通博客以来,感觉自己的生活一下充实了很多。通过写博客来积累知识的同时,也给生活带来的很多的喜悦。 第一次发表博客;第一次有访客;第一次得到博客勋章;第一次有人评论;第一次登上排行榜首位;今天,第一次排名跳出了“千里之外”。每一件事都让自己激动不已。现在写博客仍然有点无从下笔的感觉,有时候一句话反复斟酌好久仍不能表达自己的思想。
2012-02-12 00:07:26 9142 37
原创 解决centOS5中xen内核占用串口的问题
很久以前的事了,无意中又再次看到,记录下来分享一下。 背景:给客户开发系统中有短信功能,使用的设备是金笛串口短信猫。系统开发完毕给客户上线后,却发现短信发不出去。 原因:在开发时使用的系统是centOS4,而给客户安装的系统是centOS5,centOS5的默认安装是带Xen内核的,Xen内核回占用串口1,从而导致连接到串口1上的其他设备无法正常工作。
2012-02-11 09:21:24 3290 1
原创 迈出从3K到1W的重要一步——掌握设计模式
IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。 为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而自己的程序bug重重,改好
2012-02-09 23:56:34 41568 76
转载 详解css中"点","井号","逗号","空格","冒号"的用法
body{ font-family:Arial,sans-serif; color:#333333; line-height:1.166; margin:0px; padding:0px;}#masthead{ margin:0; padding:10px 0px; border-botton:
2012-02-08 10:55:13 18806
原创 谈一谈自己对依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等于完全相同,这一点在我的前一篇博文《设计模式中类的关系》中已经有所提及,下面就来详细的论述一下在java中如何准确的体现依赖、关联、聚合和组合。首先看一看书上对这四种关系的定义:
2012-02-07 15:42:53 35707 21
MysqlDocGenerator.rar
2019-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人