Design Patterns(一):Principles And Patterns
什么是设计模式?
模式描述了在软件设计过程中某一类常见的问题,以及该问题 一般性 的解决方案。
什么是面向对象设计模式?
面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互对象之间常见的 组织关系 。
面向对象设计模式解决的问题?
面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。
何为好的面向对象设计?
“应对变化,提高复用”
面向对象的三大机制?
--封装,隐藏内部实现
--继承,复用现有代码
--多态,改写对象行为
对象是什么?
--从概念层面讲,对象是某种拥有责任的抽象。
--从规格层面讲,对象是一系列可以被其他对象使用的公共接口。
--从语言层面来看,对象封装了代码和数据。
从设计原则到设计模式?
--针对接口编程,而不是针对实现编程。
--优先使用对象组合,而不是类继承。
--封装变化点
--使用重构得到模式
几条更具体的设计原则?
--单一职责原则(Single-Responsibility Principle SRP)
就一个类而言,应该仅有一个引起它变化的原因。
--开放封闭原则(The Open-Closed Principle OCP)
软件实体(类、模块、函数等等)应该是可以扩展的,但是不可修改的。
--Liskov替换原则(The Liskov Subsititution Principle LSP)
子类型(subtype)必须能够替换掉他们的基类型(base type)
--依赖倒置原则(The Dependency Inversion Principle DIP)
高层模块不应该依赖于底层模块。二者都应该依赖于抽象。
抽象不应该依赖于细节,细节应该依赖于抽象。
--接口隔离原则(The Interface Segregation Interface ISP)
不应该强迫客户依赖于它们不使用的方法。
一个对象的客户不是必须通过该对象的接口去访问它,也可以通过委托或者该对象的基类去访问它。
参考资料:
《C#面向对象设计模式纵横谈系列课程(1)》 李建中老师
敏捷设计原则 临海观潮
设计模式系列随笔:开遍-模式和原则 Justin
本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。 |