zoukankan      html  css  js  c++  java
  • 总结下我所学 设计模式

     

       ╮(╯▽╰)╭,,,.... 未必正确. 初学者慎重,本文系个人看法. 勿轻易接受.

    从听说-接触-学习.快半年了吧....

    自己感觉设计模式精华在于 一个解耦合的过程,不必强记,..尽管当时我通读完了

    <大话设计模式>和老外的<head first 设计模式>,.之后有段时间在傻记.  o(╯□╰)o....

    看到很多人在讲设计模式好处时说 >设计模式可以减少代码量啊,.减少重复代码..

    减少劳动量啊啥的....恕在下不敢苟同.,..

    我的理解是设计模式旨在运用一种思想,是前人总结出来的一种在程序中用于分离所描述事物中

    的可能存在变化的情况的一种通用解决方案.称之为模式. 当然这些是基于面向对象语言的三大特性

    基础之上的,(继承 多态 封装). 我认为好处在于 使得程序内部模块松耦合)①).从类的角度看高内聚(②).可协作编程.

    最重要的是增强程序应对可能发生的变化的能力.(③)/对于日后产品升级,有非常大的好处.

    面向对象语言三大特性之一:

    封装:相对过程式语言来讲,

    继承:

    多态:

    设计模式几大基本原则:

    1..开放封闭原则(Open-Closed Principle):      "对于扩展是开放的,对于修改是关闭的",但是不大可能完全封闭,一个好的设计是在不修改源代码的情况下,可以扩展功能..而实现开闭原则的关键就是抽象出超类接口,以隔离可能发生的变化.     在"开-闭"原则中,允许扩展具体的实现类,抽象类和接口在"开-闭"原则中扮演着极其重要的角色...即要预知可能变化的需求.又预见所有可能已知的扩展...抽象是关键!-------但是对于一个新的问题,如何提取出抽象来隔离这些变化呢?  (遗留问题).

    2.里氏代换原则(Liskov Substitution Principle LSP):    

           这是一个女人最先提出来的.对于这个原则,我们有一点可以确定,;那就是-->她老公是姓"里 ",(英文好像是Liskov ).而且她老人家提出来的:"一个软件实体如果使用的是一个基类的话那么一定适用于其子类,而且它察觉不出基类对象和子类对象的区别。也就是说,在软件里面,把基类都替换成它的子类,程序的行为没有变化。".这个应该是在真正的面向对象语言出现之前提出来的指导思想.! 要不然这么个东西怎么好意思说出口..!本来就是人家面向对象语言的特性之一.

    3. 依赖倒转原则:

          要依赖抽象,而不要依赖具体的实现..如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段..要达到松耦合的设计目标,就应该尽量的遵守依赖倒转原则.以使得程序间的相互依赖减少.依赖倒转原则就是要求将类"抽象化"以隔离变化的影响!! 

    4.迪米特法则(这个跟<head first 设计模式>里的最少知识原则好像是一个意思):

          系统中的类,尽量不要与其他类互相作用,减少类之间的耦合度,因为在你的系统中,扩展的时候,你可能需要修改这些类,而类与类之间的关系,决定了修改的复杂度,相互作用越多,则修改难度就越大,反之,如果相互作用的越小,则修改起来的难度就越小..

    当然也不是仅局限于修改啦,上面的话有缺陷... 当一个类与很多类出现直接联系的时候,这个类或者是类库的可复用性也就大大的降低了,lon余(他妈的这个字打不出来.见笑),和耦合度大大增加,...也就成了我等鸟辈写的代码了.....

    5.接口隔离法则:

          

    这个法则与迪米特法则是相通的,迪米特法则是目的,而接口隔离法则是对迪米特法则的规范..为了做到尽可能小的耦合性,我们需要使用接口来规范类,用接口来约束类.要达到迪米特法则的要求/松耦合的设计--->使用接口隔离法则.

    注释 :

    ①":松耦合:松耦合架构降低整体复杂性和依赖性。松耦合使应用程序环境更敏捷,能更快地适应更改,并且降低了风险。除此之外,系统维护也更方便

    ②:高内聚:衡量模块独立性的定性标准是内聚(一个模块内各个元素彼此结合的紧密程度)

    ③:运用上面所述的:

          1.开放封闭原则(Open-Closed Principle),

          2.里氏代换原则(Liskov Substitution Principle LSP): 

          3. 依赖倒转原则:....

    以应对需求变更.环境变更等变化.....

    到睡觉时间了.洗个澡,睡觉! 明天七点起来跑步.


  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/ToDoToTry/p/1505444.html
Copyright © 2011-2022 走看看