• 面向对象涉及SOLID原则


    S = Single Responsibility Principle 单一职责原则
    O = Opened Closed Principle 开放闭合原则 
    L = Liscov Substitution Principle Liscov替换原则
    I = Interface Segregation Principle 接口隔离原则
    D = Dependency Inversion Principle 依赖倒置原则

    1. 单一职责原则 
      引起类变化的因素永远不要多于一个,或者说:一个类有且只有一个职责。 
      如果类包含多个职责,代码会变得耦合;SRP看起来是把事物分离成分子部分,以便于能被复用和集中管理,这点也同样适用于方法级别。
     2. 开放封闭原则 
      软件实体(类,模块,函数等等)应当对扩展开放,对修改闭合。 
      如图:客户端和服务段都耦合在一起。那么,只要出现任何变化,服务端变化了,客户端一样需要改变。 
       
        
      下面则是正确的设计:对外关联接口或者抽象类 
       
     3.Liskov’s 替换原则 
      子类型必须能够替换它们基类型,或者说使用基类引用的函数必须能使用继承类的对象而不必知道它。 
      为什么LSP这么重要: 
      ● 如果没有LSP,类继承就会混乱;如果子类作为一个参数传递给方法,将会出现未知行为; 
      ● 如果没有LSP,适用与基类的单元测试将不能成功用于测试子类;
      4. 接口分离原则 
      客户端不应该被迫依赖于它们不用的接口 
      接口应该仅包含必要的方法,而不该包含其它的。比如: 
       
      注意到IBird接口包含很多鸟类的行为,包括Fly()行为.现在如果一个Bird类(如Ostrich鸵鸟)实现了这个接口,那么它需要实现不必要的Fly()行为(Ostrich不会飞). 这个”胖接口”应该拆分未两个不同的接口,IBird和IFlyingBird,IFlyingBird继承自IBird. 这里如果一种鸟不会飞(如Ostrich),那它实现IBird接口。如果一种鸟会飞(如KingFisher),那么它实现IFlyingBird 
     5. 依赖倒置原则 
      高层模块不应该依赖底层模块,两者都应该依赖其抽象。 
      比如说一个汽车类: 
      class Car{ 
         AmericanEnginee e; //这样是不对的,应该依赖于接口,必须写成IEngine e; 
      } 
      如果代码中不用依赖倒置,我们将面临如下风险: 
      ● 使用低级类会破环高级代码; 
      ●当低级类变化时需要很多时间和代价来修改高级代码; 
      ● 产生低复用的代码; 
       
     
        
      除SOLID原则外还有很多其它的面向对象原则。如: 
      “组合替代继承”:这是说相对于继承,要更倾向于使用组合; 
      “笛米特法则”:这是说”你的类对其它类知道的越少越好”; 
      “共同封闭原则”:这是说”相关类应该打包在一起”; 
      “稳定抽象原则”:这是说”类越稳定,越应该由抽象类组成”; 
     
    转自码农社区,http://w3croom.com/read.php?tid-4522.html

  • 相关阅读:
    [总结] XPO (eXpress Persistent Objects) 学习总结一
    [总结]工作中常用的正则表达式,有了它事半功倍!
    用JS实现页面滚动位置保持的方法
    [总结]TLF论坛全功略,下载指南!
    Javascript里使用Dom操作Xml
    。NET构架相关资源
    [收藏]关于用Asp.Net论坛发帖软件的实现
    匹配Unicode字符的正则表达式(中文)
    [转贴]如何实现TreeView的双击事件?
    [转贴]客户端不装adobe reader,打开pdf文件的插件
  • 原文地址:https://www.cnblogs.com/csts/p/3688375.html
Copyright © 2020-2023  润新知