zoukankan      html  css  js  c++  java
  • 设计模式(一)

    设计模式(一)

    1.开闭原则:软件实体应当对外扩展开放,对修改关闭(修改程序是:增加新功能,不准修改原来的程序代码,只能增加新的代码)

    2.里氏替换原则:所有引用基类的地方必须能透明的使用其子类的对象;(不能修改父类,我们可以抽象出来一个类 ,让其他物体都继承它)

    在面向对象中,继承有很多优点:

           1)代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;

           2)提高代码的重用性;

           3)子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有父的“种”,“世界上没有两片完全相同的叶子”是指明子与父的不同;

           4)提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的;

           5)提高产品或项目的开放性。

    3.依赖倒转原则:依赖倒转原则就是要求客户端依赖于抽象耦合。表述是:抽象应该不依赖于细节,细节应该依赖于抽象;另一种表述:要针对接口编程,不要依赖实现编程。抽象耦合是依赖倒转原则的关键,历史替换原则是依赖倒转原则的基础(历史替换下次讲到)

           1)依赖:A use a B ,那么A对B产生了依赖

          2)依赖关系的种类:

                *:零耦合关系:如果两个类中没有耦合关系,称为零耦合

                 

                        *:具体耦合关系:发生在两个具体的类(可实例化)之间,由一个类对另一个类的直接引用造成的;

             

               *:抽象耦合关系:抽象耦合关系发生在一个具体类和一个抽象类(接口)之间,使两个必须发生关系的类之间存在最大的灵活性

                

     在实际编程中,我们一定要做到一下3点:

    • 低层模块尽量都要有抽象类或接口,或者两者都有。
    • 变量的声明类型尽量是抽象类或接口。
    • 使用继承时遵循里氏替换原则。
    我们什么都没有,唯一的本钱就是青春。梦想让我与众不同,奋斗让我改变命运!
  • 相关阅读:
    基于openpose的动作识别(一)检测人脸人手
    12.4第三天
    安装linux windows双系统
    python学习之argparse模块
    win10安装linux虚拟机
    使用labelImg训练模型并用yolo3进行识别的工作流程
    使用labelImg标注数据的方法
    VirtualBox网络连接方式
    HttpWebRequest 请求带OAuth2 授权的webapi
    Bootstrap table 分页 In asp.net MVC
  • 原文地址:https://www.cnblogs.com/mengmengxia/p/6822020.html
Copyright © 2011-2022 走看看