zoukankan      html  css  js  c++  java
  • .net你必须知道的事儿 2.1

    面向对象基本原则讨论

    设计原则的历史

    学习建议

    好的设计,成就好的作品;僵化的设计,则会使你的作品大打折扣。在软件领域更是如此,Bob大叔在其《敏捷软件开发--原则,模式与实践》一书的序言中就讲到“美的东西比丑的东西创建起来更廉价”,也更快捷。”,可见追求美好的软件设计不光是代码优雅的问题,更关乎生产成本,对于软件架构的研究经历了很长时间的摸索,从面向过程到面向对象,从设计原则到设计模式,对于如何设计更好软件的探索,从未停止,技术大师总结了很多设计上的经典法则,后来者可以站在巨人的肩膀上尽情享受丰富而珍贵的经验。

    在第一章oo大智慧中,我们分析和讨论了面向对象技术的基本要素,对继承,封装,多态和接口等进行了基本的讨论,如何将这些基本技术应用的得心应手,是本章要阐释的问题和目标,面向对象的原则也正是如何使用继承,封装,多态和接口技术进行优良设计的原则总结和规律认识,因此这两章的内容相幅相城互为补充

    讲述之前

    再将设计原则和盘推出之前,简单对设计进行一点思考和讨论,这样就能更加明确的了解设计原则的意义和目的

    首先,你的软件系统是否常常有下面的问题或困扰:

    僵化,牵一发而动全身,你的系统不可修改或者扩展。

    复杂和重复,过分复杂,难于理解,跟踪你的程序往往不知取向,没有设计不可取,过渡设计同样不可取,或者系统中充满了重复的结构和实现。

    不可复用,过于僵化而不可复用,不能剥离出独立的复用组件。

    不够稳定,常常出错而又无法妥善解决问题,系统运行不够可靠。

    正是这些问题的出现,促使人们开始不断思考对软件设计,软件构架和软件流程等内容的关注,设计原则也是在这种思考和探索中逐渐归纳总结而成的,通过灵活的应用设计原则,辅助一定的设计模式封装变化,降低耦合,来实现软件的复用和扩展,这正是设计原则的最终意义。

    首先是面向对象,随着面向对象编程思想的成熟,形成了以封装,继承和多态,三大要素为主的完整体系,蕴含了以抽象来封装变化,降低耦合,实现复用的精髓,而这三大因素相互联系,相互制约,封装用以隐藏具体实现,保护内部信息,继承实现复用,而多态改写对象行为,在继承基础上实现更高级别的抽象,在此基础上逐渐形成的一些基本的OO原则,例如封装变化,对接口编程,少继承多聚合,已经具有可面向对象设计原则的思想,而本节所述的原则可以看成是对这些思想的系统化引申和归纳。

    然后是设计模式,模式代表了对经验的总结和提炼,是对重复发生的问题进行的总结和最佳解决策略的探索,自Gof的《设计模式:可复用面向对象软件的基础》这部巨著诞生以来,对于软件设计模式的探索成为每个设计开发者的必修课,而面向对象设计原则可以看做是了解设计模式的基础,为设计模式提供了基本的指导,经典的23个模式背后,都遵循着这些基本原则,而设计原则又由设计模式策略来实现,这就是二者之间的关系,所以了解原则对于认识模式具有绝对的指导意义。

    最后,就是设计原则的故事,Robert C.Martin的巨著对敏捷设计原则进行了生科而生动的论述,不同的模式应对不同需求,而设计原则则代表永恒的灵魂,需要在实践中时时刻刻的遵守,创造尽可能优雅,灵活的设计。

    请记住这些技术大师的名字和作品,并研习其中的经验和招式,正是他们让这个领域变得如此光彩夺目,沿着这些智慧的道路走下去,在品读经典的过程中,你会逐渐找到技术神灯之下的奥秘

    本章将重点讲述最基本的5个设计原则,分别是,单一职责原则,开放封闭原则,依赖倒置原则,接口隔离原则和Liskov替换原则,在表2-1中列出了主要的一些面向对象设计原则及其简单描述,详细的分析将在本章各节逐步展开。

    在本书中,我们只对前5大原则进行系统论述,关于合成/聚合复用原则,在1.2节“什么是继承”中已经有相关的论述。

     在本书中,我们只对5大原则进行系统论述,关于合成、聚合复用原则,在1.2节“什么是继承”中已经有关的论述

    学习建议

    了解面向对象的设计原则,是个不断实践和研究的过程,对于僵化的代码和设计,应该在可能的情况下有重构的勇气,当然,学习和了解理论基础也是相当重要的方面:

    深入了解设计基础,什么是设计基础,在我看来,面向对象的基本要素,面向对象的语言基础都是一切设计的基础,。没有继承,多态,聚合的深入了解,就无法更好地认识设计原则中实现理念

    打好设计原则的理论基础,本节简单总结了7中基本的设计原则,对于这些原则的核心思想和应用技巧应该建立基本的认识。、

    不断实践和反思,对于设计原则的实践,莫过于对僵化的设计操刀重构,要有不断完善的勇气和心力,在重构的实践中思考并形成经验。

    了解设计模式,设计模式都是对于软件经验的经典总结,模式和原则相辅相成,深入了解常见的设计模式尤为重要,列如Proxy模式就是对单一职责原则的一种体现

    具备必要的修养,除了本章将要讨论的设计原则,还有一些通用的软件规则对于深入理解设计原则大有裨益,列如:高内聚,低耦合,控制器,受保护变化等对于这些通用规则必须打好基础,在设计原则的很多方面都有这些基础规则的体现。

    请从了解设计原则开始重构你的系统,将僵化而脆弱的设计踢出你的代码,应用面向对象的思想来理解需求,并从中分离抽象和具体,应用前人的经验来实现优雅的设计,构建灵活,可靠和健壮的软件。

    本章将以适当的篇幅来关注软件设计原则,以及如何在.net技术中实现,通过对5个基本设计原则的分析与应用,从中了解体会如何使设计变得优雅,如何使软件更有扩展性和稳定性,如何避免僵化的设计架构。

  • 相关阅读:
    [Qt] 文本文件读写, 摘自官方文档
    [Windows] Socket Server Failed to bind, error 10048
    lodctr /R 失败的情况
    ModuleNotFoundError: No module named 'sklearn.cross_validation'
    [Qt] 通过socket将另一个程序的某个窗口调到最前端
    SortedDictionary<TKey, TValue> 类 表示根据键进行排序的键/值对的集合。
    finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码
    HttpWebRequest使用证书请求
    string StartsWith 方法 Https
    设置https验证方式
  • 原文地址:https://www.cnblogs.com/555556J/p/13528749.html
Copyright © 2011-2022 走看看