zoukankan      html  css  js  c++  java
  • 设计模式几大基本原则

    一、单一职责原则

    不应该让一个类承担过多的职责。如果某一个类有多个职责,应该考虑职责分离。

    比如定义一个摄像机的产品对象,很明显最好只让它有一个  摄像的职责,而不是应该让它还能发微信,记账等等。摄像机的单一职责就是摄像,加入其它东西就不合理。

    张三好好开拖拉机耕地,不要用拖拉机载客 。载客是小轿车的事!

    二、开放封闭原则

    对于扩展开放,对于修改封闭。对程序的改动是通过新增代码实现的,而不是更改现有的代码。

    三、里氏替换原则

    子类必须能够替换掉他们的父类型。

    四、依赖倒转原则

    高层模块不应该依赖底层模块,两个都应该依赖抽象。

    抽象不应该依赖细节,细节应该依赖抽象。

    面向接口编程,不要面向实现编程。(这句话本身就有点抽象。)

    比如定义一个Car 接口,接口这个范畴就属于“抽象”。实现有Bus公共汽车,truck卡车,ambulance救护车

    定义一个Driver类,司机驾驶员。

    每个车都有行驶的功能,我们定义的时候就这么来:

    class Driver{
       public void busDriver(Bus bus){
            bus.run();
        }
    
        public void truckDriver(Truck truck){
            truck.run();
        }
    
        public void ambulanceDriver(Ambulanceam bulance){
            ambulance.run();
        }
    
    }

    在调用的时候就需要分别调用各个实现的busRun  truckRun  ambulanceRun,这就是对于实现类的编程,而没有做到针对接口编程。

    对于接口编程,我们应该遵循接口规范,比如在Car接口中定义一个抽象方法run(),然后所有的子类都实现这个run方法。

    调用者,比如驾驶员张三去驾驶的时候,使用Car car = new Bus();  直接传入参数到carDriver(Car car)去调用car.run()就好了。

    什么? 你说你又改造了一辆新车,你就说这个新车是不是车吧?那必须是啊,是的话就挂挡踩油门car.run(),就不管你是大货车.油门  还是救护车.油门。踩油门就完事了,等你再来车也是一样。

    class Driver{
       public void carDriver(Car car){
            car.run();
        }
    
    }

     五、迪米特法则

    如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

    其前提是:在类的结构设计上,每个类都应当尽量降低成员变量的访问权限。强调类之间的松耦合。

  • 相关阅读:
    vue中的ref,refs使用
    setTimeout 为0的作用
    click 和 mousedown 以及map地图的pointerdown
    electron图标
    websocket
    居中
    一键生成vue模板
    IntelliJ IDEA 安装破解及汉化详解
    基础的一些东西
    git 合作开发
  • 原文地址:https://www.cnblogs.com/whutwxj/p/15212215.html
Copyright © 2011-2022 走看看