一般常用设计模式及原则的思想小结

前言:整体思路还是面向对象(OOA/D/P),封装、继承、多态。

设计原则:SOLID(来自敏捷软件开发,还几个关于包什么的就略了)

S,单一职责功能

O,开闭型,即开放扩展&封闭变化。体现一般为加类等

L,李氏替换,子类能完全替换父类

I,接口分离

D,依赖倒置,即低层、高层&具体依赖抽象。体现一般为接口编程

PS,有次面试说IOC与DI区别,我认为简单,就直接回答其实一样。随后就被说我还有没要问的。。。晕菜!

TMD,一看就是个葱,要细说明讲就是

IOC:控制反转,主要就是相对传统先创建要依赖对象顺序,IOC控制先创建自身再创建(设置)要依赖对象;

DI:依赖注入(注,不是SOLID的D,但也是其思想的一点体现),就是设置依赖对象关系的过程;

好像还要什么

组合/复合原则,其实就是最好不用继承实现复用

迪米特原则,其实就是能不直接作用(知道)最好,像中介者模式(也叫调停者模式)就是,其实属性通过get&set的封装也是

至于横向的高层的MV-X(MVC、MVP、MVVM等)更应说是架构模式,以后再另起一遍写一些常用架构模式概念和应用。

再补充几个OO基本原则(算是总结吧)

1.KISS,保持简单,即简约而不简单---这个很基础,很重要!!但很多喜欢显摆Coder的代码就N复杂、或动下就设计模式什么的。

2.DRY,不自我重复,即抽取公共于一处避免重复。

3.TDA,告知而不是询问,就是明确(告知)别人要做什么,他们自行去做,而不是根据(询问)情况判断后做什么。

这样要求合理封装,主要是职责和界限清晰!这个可能很多人不理解,再说俗点,就是告诉你们该干嘛干嘛去。

4.YAGNI , 这个就是不要过度设计---这我喜欢,该简单就多简单,就像我的文章,点到为止!

5.SOC,分离功能点,主要是让代码、功能、模块重用

对常用的十来个设计模式的小结:

1.单例:就是总是只能获得(创建的)那一个事例

2.工厂方法:就是用个工厂的实例化对象

3.抽象方法:就是连工厂都是抽象的,用于实例化以系列的对象

4.迭代器:封装集合,提供对外迭代访问

5.组合模式:内部加入其他对象,再用之在内部处理对外的方法实现

6.装饰者:不停给自身添加不同东西处理

7.模版:父类定义模版,子类照做

8.策略:替换不同封装的处理算法

9.代理:封装创建(要获取)对象的过程,以封装者提供出来。其中动态代理就是不指定具体代理类型

10.观察者:加减观察者,变化则通知他们

11.适配器:就是翻译成相同接口

12.责任连:就是处理完自身,设置下个对象

13.状态:和责任连类似,只是不是下个对象,而是处理同时时修改状态

14.外观:封装内部,一致对外

15.原型:就是copy对象

其他好像没有这么用过,其实设计模式是死得,就像单例,用像dictionary、map这样kv也是可以实现同样效果就行,

灵活熟练和思想才是真是主要。而且不一定要用的!

还有几个用过,差点忘了。。。好像就没几个没用过了的了~呵呵

16.享元模式:为避免大量重复开销而用,而其原理就是用个内部池子共享相同元素。可以说经常用到的,只是不起眼。

17.解析器:就是根据语义不同做不同解析,也就是构建不同表达式去解析该上下文。用过lambda表达式树做ORM就应该知道的。

18.命令:这个是个典型。其实就是封装具体执行者,由接受者根据不同命令对象设置执行队列,并根据情况控制执行。

哦,补充一个抽象类与接口的不同,最主要就是接口强调协定对外功能(想下C#接口能包含什么,他们关系怎样就知),

而抽象类强调对内族群;其他语法上的什么单多实现继承等区别都不是个菜!

若转载,请注明@jiyilee.cnblogs.com 珍惜生活,努力工作!!!
原文地址:https://www.cnblogs.com/jiyilee/p/4903286.html