也可以用这三大机制做出“差的面向对象设计”

时间:2022-06-02 06:46:21

第一讲:1. 面向东西设计模式与原则

设计模式简介:

每一个模式描述了一个在我们周围不停反复产生的问题,以及该问题的解决方案的核心。
                                                        ——Christopher Alexander{建筑师}


软件设计师对设计模式的观点的理解:

(1)设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。
(2)面向东西设计模式描述了面向东西设计过程中、特定场景下、类与彼此通信的东西之间常见的组织关系。
(3)人是一个经验性的动物

GoF23 种设计模式是面向东西设计模式的根本、但不是设计模式的全部
? 历史性著作《设计模式:可复用面向东西软件的根本》1994 一书中描述了23种经典面向东西设计模式,创设了模式在软件设计中的职位地方。该书四位作者被人们并称为Gang of Four (GoF),“四人组”,该书描述的23种经典设计模式又被人们称为GoF23 种设计模式。
? 由于《设计模式:可复用面向东西软件的根本》一书确定了设计模式的职位地方,人们凡是所说的设计模式隐含地暗示“面向东西设计模式”。但这并不意味“设计模式”就即是“面向东西设计模式”,也不意味着GoF23种模式就暗示了所有的“面向东西设计模式”。除了“面向东西设计模式”外,还有其他设计模式。除了GoF23 种设计模式外,还有更多的面向东西设计模式。
? GoF23 种设计模式是学习面向东西设计模式的起点,而非终点;本培训课程的方针是让学员在成立在有效要领的根本上,掌握GoF23种设计模式。

设计模式与面向东西
? 面向东西设计模式解决的是“类与彼此通信的东西之间的组织关系,包孕它们的角色、职责、协作方法几个方面。
? 面向东西设计模式是“好的面向东西设计”,所谓“好的面向东西设计”是那些可以满足“应对变革,提高复用”的设计。{“源代码就是设计”,“好的模式是颠末不竭的重构”}
? 面向东西设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向东西设计模式的最终实现仍然要使用面向东西编程语言来表达,本课程基于C#语言,但实际上它适用于撑持.NET框架的所有.NET语言,如Visual Basic.NET、C++/CLI等。
? 面向东西设计模式不像算法技巧,可以照搬照用,它是成立在对“面向东西”干练、深入的理解的根本上的经验性认识。掌握面向东西设计模式的前提是首先掌握“面向东西”!

根本:从编程语言直不雅观了解面向东西 {至少在语言层了解面向东西,实现层了解面向东西}
? 各类面向东西编程语言彼此有别,但都能看到它们劈面向东西三大机制的撑持,即: “封装、担任、多态”
    – 封装,隐藏内部实现
    – 担任,复用现有代码
    – 多态,改写东西行为
? 使用面向东西编程语言(如C#),可以敦促措施员以面向东西的思维来思考软件设计布局,从而强化面向东西的编程范式。
? C#是一门撑持面向东西编程的优秀语言,包孕:各类级另外封装撑持;单实现担任+多接口实现;抽象要领与虚要领重写。

但OOPL并非面向东西的全部 {应用面向东西的语言与应用面向东西设计模式是两个完全差此外情况,了解面向东西语言不能证明你掌握面向设计模式}
? 通过面向东西编程语言(OOPL)认识到的面向东西,并不是面向东西的全部,甚至只是浅陋的面向东西。
? OOPL的三大机制“封装、担任、多态” 可以表达面向东西的所有观点,但这三大机制自己并没有刻画出面向东西的核心精神。换言之,既可以用这三大机制做出“好的面向东西设计”,也可以用这三大机制做出“差的面向东西设计”。不是使用了面向东西的语言(例如C#),就实现了面向东西的设计与开发!因此我们不能依赖编程语言的面向东西机制,来掌握面向东西。
? OOPL没有回答面向东西的根天性问题——我们为什么要使用面向东西?我们应该怎样使用三大机制来实现“好的面向东西”? 我们应该遵循什么样的面向东西原则?
? 任何一个严肃的面向东西措施员(例如C#措施员),都需要系统地学习面向东西的常识,纯挚从编程语言上获得的面向东西常识,不能够胜任面向东西设计与开发。