美文网首页
设计模式第一篇-六大原则

设计模式第一篇-六大原则

作者: 做个快乐的代码哥 | 来源:发表于2018-01-24 08:44 被阅读14次

    设计模式原则分析-github

    一、什么是设计原则?

          原则就是一种规范,一种在你去思考项目中需要使用哪种设计模式情况下,需要去考虑的因素,基本上所有的设计模块整体上都需要遵循以下设计原则,当然这六大原则是死的,需要灵活运用,但是软件中的设计模式尽量往这六大原则靠,这是我们的目的。

    二、六大原则

      1、单一职责原则:Single Responsibility Principle (SRP)

              定义: 单一原则要求每个模块只做自己需要做的事情,其他事情由其他模块去做,划分清楚模块, 通俗理解就是每一个类应该是一组相关性很高的函数、数据的集合。

              案例:  简单图片加载缓存框架

              分析:一个图片加载缓存框架,应该是涉及到图片加载类、图片下载类、 图片缓存类,                       这三个类是相互配合完成图片加载缓存框架,但是每个模块的职责都很明确,图片                     加载只负责根据url,显示图片,而具体的图片下载流程由图片下载器去处理,使用                       的是缓存的数据,还是网络加载数据由缓存类处理,这就是所说的模块划分,图片                       处理。

       2、开闭原则: Open Close Principle (OCP)

            定义:对扩展开放,对修改关闭

            案例: 简单图片加载缓存框架

            分析: 新增需求,需要在原来内存缓存的基础上新增sdcard缓存,这时候如果原有没设计                      好,就会需要去imageloader中新增编写sdcard缓存的代码,这样就违背了对扩展                        开  放,对修改关闭的原则,正确的做法应该是由缓存模块去决定使用哪种缓存。

        3、李氏替换原则: Liskov Substitution Principle (LSP)

               定义:任何一个基类出现的地方,子类必须可以出现,并且可以不出任何错误,因此要                         求  必须是父子关系,

               特点: 1、在于抽象(继承和接口), 每一个子类都拥有父类所有的方法属性。 

                           2、李氏替换与开闭原则生死相依,通过里氏替换原则达到了对外开放,

                                对修改关闭

               案例: 简单图片加载缓存框架,缓存模块基类ImageCache出现使用的地方,可以使用                           任  意的MemoryCache或者SDCardCache替换。

         4、依赖倒置原则:Dependence Inversion Principle(DIP)

                定义:  高层次模块不依赖于低层次模块实现细节, 通俗理解就是 ,依赖于抽象,不依赖                          于  具体实现,核心思想就是面向接口编程。 接口高层次,具体实现低层次

                案例:简单图片加载缓存框架

                分析: 该框架中的缓存模块,在ImageLoader使用中,不需要关心使用了那种缓存策

                          略,依赖于接口抽象,不依赖于是具体内存缓存还是sdcard文件缓存

         5、接口隔离原则:Interface Segregation Principle(ISP)

                定义:  类与类间的依赖关系,应该建立在最小接口上,通俗点就是,不要强迫客户使用                         它  们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临                         由于这些不使用的方法的改变所带来的改变。

                特点:将非常庞大、臃肿接口拆分成更小的更加具体的接口

          6、迪米特(最小知识)原则:Least Knowleage Principle(LKP)

                 定义: 一个对象应该对其他对象有最少的了解,及在满足提供外部所需要的数据接口调                         用  以外,尽量不需要外部知道改对象的内部细节,屏蔽外部对对象的实现细节,应该使用修饰符如private 等来控制不必现暴露给外界的方法等。 

                 案例: 简单图片加载框架

                 分析: ImageLoader不需要对图片缓存模块的细节了解,只需要获取缓存、放入缓存即                          可,至于是从内存获取还是从sdcard读取,ImageLoader并不需要知道。

    三、总结

             设计模式的这六个原则是思想,需要尽量往这里面靠,当然有时候为了代码逻辑的简介理解,可能有些会背离这边的涉及原则,需要去思考和权衡。但是整体上的涉及是要符合这边的思想的, 后续会逐步讲解每种常用设计模式的使用,有问题疑问也可留言沟通。

    相关文章

      网友评论

          本文标题:设计模式第一篇-六大原则

          本文链接:https://www.haomeiwen.com/subject/tkvqaxtx.html