高调设计格局C

转贴请表明转自:http://blog.csdn.net/gufeng99/article/details/45832711

读程杰的《高调设计情势》有一段时间了,将其C#版的设计情势代码用C++全体重新完结了两次,并记下个人的一对感受,同时也对一些设计形式进行了改造。网上有份《大话设计情势完成(C++版)》的资料,但稍看后错误不少,比如用作接口的基类不将析构函数注明为虚函数,仅内部采取的积极分子变量不声明为private(公然违背迪米特法则),new出的目的不开展自由等等一些荒唐或二流编码习惯,易误导新学C++的同窗。故我将自家个人完结的C++献丑放出,欢迎大家批评指正,共同进步。

1、单一任务规范
一个类只干一件业务,或者一类业务,功效要单纯,就像是唯有照相功用的照相机,照相的意义一定牛B过功用齐全的手机。

2、开放——封闭原则
函数、类、模块应该可以增添,但不可以修改,修改会造成使用它们的老用户不能适应甚至出错。如同国外的大片,本来唯有英文字幕,但国内的同桌们也要欣赏欣赏腐朽的资本主义文化,但又总不可以和老美说:“给哥统统换上粤语的,还得加上拼音”(修改),即便老美被英雄的社会主义所影响,统统换成普通话的,但老美的乡党们臆想又要造反了,所以只可以靠国内的字幕组同学麻烦劳动给外挂上中文字幕(扩大),组成我们喜乐见闻的中国和英国文字幕。
微软的windows系统在此法则上就有不行典型的采纳,如常用启动进程的API——ShellExecute,因为无法控制启动后的历程,而添加了ShellExecuteEx函数,同时保留ShellExecute给默默做了连年贡献的老同志运用,那样就少了诸多的包容难点。

3、里氏代换原则
子类必须可以替换掉他们的父类,即老鼠的幼子肯定要会打洞,即使不会打洞那就是和隔壁老王生的了。但父类不自然可以替代子类,即孙子学会了调戏猫咪汤姆,但老子见了或者如故得脚底抹油。

4、看重倒转原则
高层模块不应重视底层模块,高层和底部都应借助于抽象,针对接口编程,不要对落实编程。面向进度的编程理念中,会有高层看重底层,但底层不可以凭借高层的说教,就是党教育大家的,领导干部(高层)要依靠人民群众(底层)。但面向对象的编程中,就改成了首长干部和平民日产都要依赖于法律(抽象规范),要依法治国。

5、迪米特法则
5.1、每一个类都应有尽可能下跌成员的走访权限,外界不须要的章程和成员变量都应表达为private。即自己的机密就让它烂在心头,别一天到晚逮着人就说自己有一个大地下——”我是个傻X“。
5.2、如果2个类不必相互直接通信,那么那2个类就不该直接有互动调用或引用,即使真的需求调用,则需通过中间人举行传达。如我们(类1)去发快递,只要把快递给快递公司(中间人)就好了,而不用看那多少个快递员长得帅就指定越发快递员(类2)帮你去送这封快递。

************************************************************************************************************************************************************
以下是私房计算的部分条条框框

6、界面和逻辑分离
电子版,飞机杯(逻辑)能够穿女仆装(界面1)装可爱,也得以穿空姐服(界面2)玩克制诱惑,即便无良卖家硬将飞机杯和女仆装用502粘在共同(界面逻辑合体),估量普遍空姐控,医护人员控屌丝要将差评刷上Tmall首页了。

7、不要将成员变量直接暴光,而经过分子函数来回到或改动
因为类的积极分子变量是可能会被删除的,同时外部也可直接改动成员变量,造成不能控制的后果。就如开银行,大家要贷款(成员变量:钱),ok,没难题,办贷款手续(成员函数),通过柜台MM把钱给用户。如若我们一直到金库里去拿钱(直接取成员变量),还嚷嚷说哥是来借钱的,猜度警察伯伯的枪弹会不承诺的,即使咱们诚实守信,拿了会还,但也总会有人会搬空了金库还拉坨大便改良改良空气。

8、代码重复或转移频繁时,需考虑设计格局

即便说设计格局好,设计格局棒,但也不是必须每一天用,随处使,设计的时候能预测将来需求使用合适的设计格局最好,但若不可以,则可先做出demo,在延续要求变动,或代码迭代的长河,即便发现有双重或接近的代码、类或系统往往的里边改动,则需求考虑设计情势进行重构了。

另附上程杰的《大话设计方式》一书的电子版(带目录),该书以C#写成,幽默诙谐,通俗易懂,是读书设计方式最好的一本入门书。

下载地址:http://download.csdn.net/detail/gufeng99/8843487

 

相关文章