zoukankan      html  css  js  c++  java
  • 面向对象基本原则

    单一原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。
    如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
     
     
    开闭原则(OCP):软件实体(类、模块、函数等)应该可以扩展,但是不可以修改。
    在我们初次编写代码时,假设变化不会发生,当变化发生时,我们就创建抽象来隔离以后发送的同类变化。
    面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
    开闭原则是面向对象设计的核心所在。遵循这个原则可以带来可维护、可扩展、可复用、灵活性等优势。开发人员应该仅对程序中呈现出的频繁变化的部分做出抽象。
    demo:
    我们需要一个类来做加法运算。客户端--->加法类
    当我们需要增加减法时,我们就要修改原来的类,违背了OCP原则,所以抽象出运算类,客户端-->运算类(加法、减法、乘法等子类)。
     
    依赖倒置原则(DIP):高层模块不应该依赖底层模块,两个都应该依赖抽象。抽象不应该依赖细节,但细节应该依赖抽象。
    依赖倒置是面向对象设计的标志,编程时应该考虑如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或接口,那就是面向对象的设计。
    demo:类A(人)直接依赖于类B(苹果),如果A修改了为依赖C(梨)则必须修改A代码,这样A是高层代码,负责复杂业务,B和C是底层模块。所以ABC3个类都需要抽象,抽象为People和Fruit2个抽象类。
    demo:bufferContainer高层类依赖与ArrayBuffer和ElementArrayBuffer类,但应该使用他们的抽象类Buffer类,然后调用Buffer类的抽象方法。
     
    里氏替换原则(LSP):子类型必须能够替换掉他们的父类型。
    只有子类可以替换掉父类,软件单位的功能不受影响的时候,父类才能真正被复用,而子类也能在父类的基础上增加新的行为。
    demo:现在父类 动物(跑)<---鸟(飞),现在有企鹅类不会飞,如果继承自鸟类,那企鹅就会飞的方法,那他去替换鸟类时肯定会出错,所以这里企鹅类应该继承到动物类,并现实自身的跑的方法。
     
     
     
  • 相关阅读:
    递归算法
    linux下如何使用split
    什么是OPTEE-OS
    ubuntu 18.04 64bit如何编译安装内核
    ubuntu 18.04 64bit没有声音如何解决
    如何解决ubuntu报的错误:You must put some 'source' URIs in your sources.list
    linux下如何安装解压工具rar
    如何将一个已有的仓库推送到一个空的新仓库中
    ubuntu 18.04 64bit下如何安装python开发工具jupyter
    ubuntu 18.04 64bit下如何安装python开发工具jupyterhub
  • 原文地址:https://www.cnblogs.com/xiaohaoxuezhang/p/6768404.html
Copyright © 2011-2022 走看看