zoukankan      html  css  js  c++  java
  • 设计模式之六大设计原则

             在上篇博文中提到了开放—封闭原则,没有细谈。这次我们来总结一下设计模式的几大原则。

             1开放—封闭原则:是指软件实体(类、模块、函数等)应该能够扩展,可是不可改动。

             对原则的理解:开闭原则是最具有理想主义色彩的一个原则,它是面向对象设计的终极目标,以下所要介绍的几个原则能够看成是为了符合开闭原则所作的努力和解决的方法。

    对于开闭原则通俗的理解就是。能不改就不改。能少改尽可能的少改。周所周知,物质是运动的,世界是变化的,想要让一个事物永恒不变是不可能的,所以要想让软件绝对符合开闭原则是不可能的。

             2单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。

             通俗来讲,就是一个类或者是一个模块仅仅干一件事,或者说这个类或者模块仅仅扮演一种角色。它仅仅需将自己负责的活儿干好即可。其它的一概无论,绝对不能瞎掺和。

    比方我们在做软件的时候,定义了一个类是负责连接数据库的,至于连接上之后的数据操作就交给其它的函数去做。别都自己揽过来。到时候万一要换数据库那就麻烦了。

             3依赖倒转原则:A 高层模块不应该依赖底层模块。

    两个都应该依赖抽象。B 抽象不应该依赖细节,细节应该依赖抽象。

             通俗来说,就是要针对接口编程,不要针对实现编程。在面向过程的软件开发时。为了能够实现代码复用,一般会吧经常使用的一些代码写成函数,大量的函数就组成了函数库,这样在做新的项目时。就能够去调用这些底层的函数,这就是所谓的高层模块依赖底层模块。而我们要达到的目的是高层模块和低层模块没有非常强的耦合性。不论什么一方都能够非常easy的被复用,这样我们就要想办法对他们之间的接口进行设计和编程,在复用的时候仅仅需改动接口或者抽象类就可以。

             4里氏代换原则:子类型必须可以替换掉它们的父类型。

             这个原则的定义非常短,相信应该不难理解。说白了就是一个软件实体假设使用的是一个父类的话,那么将父类都替换成它的子类。则程序依然能够编译通过。而且正常执行。

    能够说里氏代换原则是继承复用技术的基础。举个样例。动物类为父类。猫,狗。牛,羊为其子类。当我们实例化一个动物类的对象:动物 animal= new 猫()后。猫具有了父类动物的吃喝拉撒等方法。而当用狗替换掉猫即:动物 animal =new 狗(),依然能够编译执行,没有不论什么不和谐的地方。这就是里氏代换原则的体现。

             5迪米特法则:假设两个类不必彼此直接通信。那么这两个类就不应当发生直接的相互作用。假设当中一个类须要调用还有一个类的某一个方法的话。能够通过第三者转发这个调用。

             对原则的理解:迪米特法则有一个别名叫做最少知识原则,其核心的思想就是尽可能的减少类与类之间的耦合性,说白了就是不要和陌生类交流,就如同我们要找人办事一样,能帮得了你的人。你不认识,那么你就会找一个你认识的同一时候对方也认识的人做中间人,让这个中间人来帮你传达你的意思,这样就能非常好地完毕你想要做的事。

             6合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。

             所谓聚合表示的是一种弱的拥有关系。体现的是A对象能够包括B对象。但B对象不是A对象的一部分;合成则是一种强的拥有关系。体现了严格的部分和总体的关系。部分和总体的生命周期一样。

    在编程中优先使用对象的合成/聚合将有助于保持每一个类被封装。并被集中在单个任务上。这样类和类继承层次会保持较小规模。而且不太可能增长为不可控制的庞然大物。

             我们在进行软件设计的时候,尽量遵循以上原则。力争写出可维护,可复用,可扩展,灵活性好的代码。

  • 相关阅读:
    力扣算法题—048旋转图像
    力扣算法题—047全排列2
    力扣算法题—046全排列
    力扣算法题—045跳跃游戏二
    数据结构【排序】—排序算法大集合
    数据结构【查找】—B树
    第一百四十四天 how can I 坚持
    第一百四十一/二/三天 how can I 坚持
    第一百四十天 how can I坚持
    第一百三十九天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5079482.html
Copyright © 2011-2022 走看看