1.开闭原则

对扩展开放对修改关闭
提高可拓展性和维护性
用抽象构建框架,用实现拓展细节

  • 核心思想:面向抽象编程
  1. package com.yulang.design_pattern_23.open_close;
  2. public interface ICourse {
  3. public Double getPrice();
  4. }
  1. package com.yulang.design_pattern_23.open_close;
  2. public class JavaCourse implements ICourse {
  3. @Override
  4. public Double getPrice() {
  5. return 300.00;
  6. }
  7. }
  1. package com.yulang.design_pattern_23.open_close;
  2. public class DiscountJavaCourse extends JavaCourse {
  3. public Double getDiscountPrice(){
  4. return super.getPrice()*0.8;
  5. }
  6. public Double getOrginPrice(){
  7. return super.getPrice();
  8. }
  9. }
  1. package com.yulang.design_pattern_23.open_close;
  2. public class Test {
  3. public static void main(String[] args) {
  4. DiscountJavaCourse discountJavaCourse = new DiscountJavaCourse();
  5. System.out.println(discountJavaCourse.getOrginPrice());
  6. }
  7. }

2.依赖倒转原则

高层模块不应该依赖低层模块,二者都应该依赖其抽象

抽象不应该依赖细节
针对接口编程,不要针对实现编程

优点: 减少代码间的耦合
  1. package com.yulang.design_pattern_23.dependence;
  2. public interface ICoruse {
  3. public void study();
  4. }
  1. package com.yulang.design_pattern_23.dependence;
  2. public class JavaStudy implements ICoruse {
  3. @Override
  4. public void study() {
  5. System.out.println("java----------");
  6. }
  7. }
  1. package com.yulang.design_pattern_23.dependence;
  2. public class PythonStudy implements ICoruse {
  3. @Override
  4. public void study() {
  5. System.out.println("python--------------");
  6. }
  7. }

  1. package com.yulang.design_pattern_23.dependence;
  2. public class Geely {
  3. public void study(ICoruse coruse){
  4. coruse.study();
  5. }
  6. }
  1. package com.yulang.design_pattern_23.dependence;
  2. public class Test {
  3. public static void main(String[] args) {
  4. Geely geely = new Geely();
  5. geely.study(new JavaStudy());
  6. geely.study(new PythonStudy());
  7. }
  8. }

3.单一职责原则

不要存在多于一个导致类变化的原因

一个类只做一件事

优点: 降低类的复杂性,提高类的可读性
提高系统的可维护性

4.接口隔离原则

用专门的接口而不是使用单一的总接口
一个类对一个类的依赖应该建立在最小的接口上
接口注意一定要适度
符合高内聚低耦合的设计思想捕获.PNG

5.迪米特法则

一个对象应该对其他对象保持最少的了解,又叫最少知道原则
尽量降低类与类之间的欧耦合
捕获.PNG
捕获.PNG

6.里氏替换原则

7.合成复用原则