设计模式之禅笔记-6大原则

设计模式6大原则

1.单一职责原则

定义:应该有且仅有一个原因引起类的变更
使用建议:接口一定要做到单一职责,类的设计尽量做到只有一个 原因引起变化

2.里氏替换原则

定义:所有引用基类的地方必须能透明地使用其子类的对象。

当父类方法参数类型窄于子类方法参数类型时

点击查看代码
import java.util.HashMap;

public class ParentClass {
  public void print(HashMap map) {
    System.out.println("父类执行");
  }
}

import java.util.Map;

public class ChildClass extends ParentClass {
  public void print(Map map) {
    System.out.println("子类执行");
  }
}

import java.util.HashMap;

public class Test3 {
  public static void main(String[] args) {
    ParentClass parentClass = new ParentClass();
    // ParentClass parentClass = new ChildClass();
    HashMap map = new HashMap();
    parentClass.print(map); //执行结果:父类执行
  }
}



import java.util.HashMap;

public class Test3 {
  public static void main(String[] args) {
    // ParentClass parentClass = new ParentClass();
    ParentClass parentClass = new ChildClass();
    HashMap map = new HashMap();
    parentClass.print(map); //执行结果:父类执行
  }
}


结论:满足里氏替换原则

当父类方法参数类型宽于子类方法参数类型时

点击查看代码
import java.util.Map;

public class ParentClass {
  public void print(Map map) {
    System.out.println("父类执行");
  }
}



import java.util.HashMap;

public class ChildClass extends ParentClass {
  public void print(HashMap map) {
    System.out.println("子类执行");
  }
}


import java.util.HashMap;

public class Test3 {
  public static void main(String[] args) {
    ParentClass parentClass = new ParentClass();
    // ParentClass parentClass = new ChildClass();
    HashMap map = new HashMap();
    parentClass.print(map); // 父类执行
  }
}

import java.util.HashMap;

public class Test3 {
  public static void main(String[] args) {
    // ParentClass parentClass = new ParentClass();
    ParentClass parentClass = new ChildClass();
    HashMap map = new HashMap();
    parentClass.print(map); // 父类执行
  }
}

结论:不满足里氏替换原则

因此子类中方法的前置条 件必须与超类中被覆写的方法的前置条件相同或者更宽松。

覆写或实现父类的方法时输出结果可以被缩小:重写父类方法时,返回类型可以是父类方法返回类型的子类

3.依赖倒置原则:依赖于抽象,不依赖于实现
面向接口编程

4.接口隔离原则
接口尽量细化,同时接口中的方法尽量少。

5.迪米特法则
核心观念就是类间解耦,弱耦合。一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调 用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public 方法,我就调用这么多,其他的我一概不关心。

6.开闭原则
对扩展开放,对修改关闭;一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。

posted @   shigp1  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示