关于设计模式我们工作中应用的很多,很多面试公司都问关于设计模式的问题。
我决定学习一下设计模式 正好有李建中的C#面向对象设计模式纵横谈笔记,决定花费一段时间进行学习。
他说设计模式和算法不同,算法只要套用就好了,个人认为,设计模式也是一种经验的总结,也就是套用,就跟语言一样,如果符合语境,那么就可以说出来,只是不能生搬硬套,设计模式的魅力也就是语言的魅力。
今天主要学习了一些设计原则:
1.针对接口编程,而不是针对实现编程
-客户无需知道所使用对象的特定类型,只需要知道对象拥有客户所期望的接口
2.优先使用对象组合,而不是类继承(不太明白是什么意思)
3、封装变化点
作为一个初级程序员,一定要站在一定的高度。不要讲职能分的那么清楚,因此记住一点 源代码即设计。Refactoring to pattern 使用重构得到模式
设计模式就是多年编程经验的总结,介绍一下一些面向对象的设计原则“:
1.单一职责原则(Single Responsibility Principle)
一个类应该仅有一个引起变化的原因
2.开放封闭原则(OCP)(The Open-Closed Principle)
类模块应该是可扩展的,但是不可修改(对扩展开放,对更改关闭)
3.Liskov替换原则(LSP)(Liskov Substitution Principle)
子类必须能够替换它们的基类
4.依赖倒置原则(DIP)(Dependency Inversion Principle)
高层模块不应该依赖于底层模块,二者都应该依赖于抽象。
抽象不应该依赖于实现细节,实现细节应该依赖于抽象。
5.接口隔离原则(ISP)(Interface Segregation Principle)
不应该强迫客户程序依赖于它们不同的方法。
总结:
设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。
面向对象设计模式描述了面向对象设计过程中,特定场景下,类与相互通信的对象之间常见的组织关系。
模式分类
从目的来看:
创建型(Creational)模式:负责对象创建
结构型(Structural)模式:处理类与对象间的组合
行为型(Behavioral)模式:类与对象交互中的职责分配
从范围来看:
类模式处理类与子类的静态关系
对象模式处理对象间的动态关系