zoukankan      html  css  js  c++  java
  • 面向对象设计的6大原则

    https://juejin.im/post/5b9526c1e51d450e69731dc2

    程序设计原则:SOLID
    1:单一职责原则 (Single Responsibility Principle)
      雇员类->属性:名字(Name) 薪水(Salary) 岗位(Position)
      雇员类->方法:做本职工作(- (void)dowork)
    **** >> 新加需求。
      a: 计算工资 《-》 会计部门
      b: 升值 《-》 人事部门
    **** >> 解决:由于新需求不属于员工的职责。应该新建对应的类别。不应该放入雇工类
      a: 新建会计类,处理工资问题
      b: 新建人事类,处理升值问题

    2:开闭原则 OCP  (Open Close Principle)
      课程类->属性 课程名(CourseName)教师名(TeacherName)课程介绍(CourseIntroduce)
    **** >> 新加需求
      需要开通:文字课程,音频课程,视频课程, 直播课程
    **** >> 解决
      不要再原有的课程类添加属性,而是通过继承创建,文字课程类,音频课程类,视频课程类等等。

    3:里氏替换原则  (Liskov Substitution Principle)
      避免继承的滥用。
      子类可以增加自己特有的方法, 也可以实现父类的抽象的方法,但是不能重写父类的方法

    4:迪米特法则 (Law Of Demeter)
      最少知道原则
      即不需要返回的数据 就应该返回。
      如:需要学生的姓名,就应该吧学生类返回,而是直接返回名字

    5:接口分离原则 (Interface Segregation Principle)
      a:客户端不应该依赖他不需要的接口。
      b:接口应尽可能的少,避免臃肿的接口。

    6:依赖倒置原则 (Dependency Inversion Principle)
      针对接口(协议)编程,而不是针对实现变成。
      需求:用代码模拟一个实际项目开发的场景:前端和后端开发人员开发同一个项目。
      生成:FrondEndDeveloper类   - (void)writeJaveScriptCode;  
           BackEndDeveloper类    - (void)writeJaveCode;
      正确的设计:
      @protocol developerProtocol <NSObject>
        - (void)writeCode
      @end
      之后:FrondEndDeveloper类
           BackEndDeveloper类
           继承developerProtocol。最后调用直接调用协议方法
    总结:
    类的职能应该清晰。接口要避免臃肿。应该基于协议编程。继承不应该重写父类方法即不应该滥用继承。类和接口的粒度要尽可能细。但是不应该过细。


     





  • 相关阅读:
    tpot从elastic search拉攻击数据之三 用于拉取的java程序
    tpot从elastic search拉攻击数据之二 配置端口映射
    wireshark使用
    VS c++ opencv画图
    java maven项目打包
    从es中拉取全部数据/大量数据 使用scroll+scan避免深分页
    java配置文件properties,yml,一般文件
    解决:JQuery "Uncaught ReferenceError: $ is not defined"错误
    java 字符串解析为json 使用org.json包的JSONObject+JSONArray
    easyui最简单的左右布局实现,及tab的右键菜单实现
  • 原文地址:https://www.cnblogs.com/jisa/p/9664448.html
Copyright © 2011-2022 走看看