专业的营销型网站培训中心,杭州计算机公司排名,记账公司如何拉客户,11号在线 网站开发目录——阅读所需预计5-10分钟 #x1f396;️前言#x1f3af;单一职责原则#x1f4e3;1. 定义#x1f49e;2. 定义很抽象#xff0c;咱继续看#x1f389;3. 举几个栗子#x1f49e;4. 以上栗子出现了一个问题#xff0c;单一职责的划分究竟可以分多细#x1f449;… 目录——阅读所需预计5-10分钟 ️前言单一职责原则1. 定义2. 定义很抽象咱继续看3. 举几个栗子4. 以上栗子出现了一个问题单一职责的划分究竟可以分多细5. 怎么记住这个原则 接口隔离原则1. 是不是觉得这个隔离和上面单一职责的划分很像隔离意味着划分不是一样的东西吗?怎么区别两者的区别呢2.接口隔离原则主要体现在两个方面2.1. 不要使用没有任何依赖关系的接口为什么?2.2 一个类对另一个类的依赖性应该建立在最小的接口上 3. 怎么记住这个原则里氏替换原则1. 定义2. 怎么记住他3. 子类覆盖父类已实现的方法 我觉得没啥意义的原因 依赖倒置原则1. 定义2. 怎么理解他3. 怎么记住他 迪米特原则1. 定义2. 怎么理解他️3. 怎么记住他 开闭原则1. 定义❤️2. 怎么理解3. 怎么记住他 设计模式的分类创建型模式结构型模式行为模式 ️前言 本文只针对用几分钟快速了解设计模式的原则更详细请查找更多资料 单一职责原则
1. 定义
她规定一个类应该只有一个发生变化的原因
2. 定义很抽象咱继续看
单一职责原则强调职责的分离就是一个类只能负责一种职责行为
3. 举几个栗子
SpringBoot的Main类只有一个职责——启动项目SpringMVC的Controller层Service层DAO层划分不同的职责UserController对应一个职责——对用户相关职责UserController的登录功能也可以分离成一个类——对应单一的登录职责
4. 以上栗子出现了一个问题单一职责的划分究竟可以分多细
规矩是人定的符号业务需求就好一个用户控制类可以划分出登录类负责单一登录职责需要看需求而定如果登录方式有QQ,微信等多种方式单独划分出登录控制类是合理的但是如果只有一个账号密码登录方法将其划分出来是否显得多余。
5. 怎么记住这个原则
最典型的代表——记住SpringBoot的主函数是单一职责原则看到他就想起:单一职责原则
接口隔离原则
1. 是不是觉得这个隔离和上面单一职责的划分很像隔离意味着划分不是一样的东西吗?怎么区别两者的区别呢
单一职责原则是接口隔离原则的基础单一职责原则注重从职责的角度进行类或接口的划分在此基础上接口隔离原则登场注重接口使用的“精确性”和最小化如果还是很迷惑没事继续往下看
2.接口隔离原则主要体现在两个方面
2.1. 不要使用没有任何依赖关系的接口
简单来说就是不要使用那些完全没有必要实现的接口举个JDK源码的栗子——JDK的作者也犯过这个错
public static void main(String[] args){ListObject list Collections.emptyList();list.add(new Object());
}我们执行这个代码会报错
为什么?
因为通过emptyList()创建的空集合是不支持add()方法的但这不是重点重点在于EmptyList对象实现了一个RandomAccess接口。 因为 EmptyList对象实现了一个RandomAccess接口 意味着 emptyList()空对象要支持随机访问但是从这个 emptyList()创建到销毁都不能add()进去一个对象有谈何随机访问呢? 那这个 RandomAccess接口 就是无意义的。 所以 RandomAccess接口 违反了接口隔离原则所以JDK作者也会犯错哈哈(虽然无伤大雅)
所有再次强调接口隔离第一条原则: 不要使用没有任何依赖关系的接口
2.2 一个类对另一个类的依赖性应该建立在最小的接口上
简单理解就是把接口的按单一职责划分清楚再给子类去实现使用再用JDK的代码举个例子
上面就将接口划分为
支持随机访问支持序列化
所有总的来说这就是接口隔离在单一职责原则的基础上不使用没有依赖关系的接口对接口进行更精确细化的划分从而达到接口隔离的境界。
3. 怎么记住这个原则
接口隔离就是把不要的接口去掉把(细糠)接口按单一职责分好留下来再次强调: 不要使用没有任何依赖关系的接口再次强调: 一个类对另一个类的依赖性应该建立在最小的接口上
里氏替换原则
1. 定义
子类需要实现父类所有抽象方法——(其实你一定会这么做的,不然编译器就爆红了)子类可以增扩自己的方法和属性子类重载覆盖父类已实现的方法(我觉得这个没啥实际意义可以忽略这条在下方阐述原因)
2. 怎么记住他
里氏的氏联想到父子子承父业子再发家子类继承父类已有的方法子类增加自己的属性和方法
3. 子类覆盖父类已实现的方法 我觉得没啥意义的原因
从业务的角度子类覆盖父类已实现的方法可以通过静态委派调用被重载的父类的方法但是搞那么复杂干嘛我想用子类调用方法直接在子类新增想要的方法就行了想用父类的就直接用何必搞个静态委派折磨人。
依赖倒置原则
1. 定义
就是面向接口编程
2. 怎么理解他
去搜一下面向接口编程此处不赘述简单理解就是对多态的运用。
3. 怎么记住他
依赖倒置就是从依赖具体的对象倒置成依赖抽象的接口
迪米特原则
1. 定义
最少知道原则
2. 怎么理解他
一个类对另一个类知道的越少越好一个类只通过一个接口通信但不会暴露内部细节给对方类比客户端和服务器只需要暴露一个接口内部怎么实现不关心
️3. 怎么记住他
迪 和 低谐音低就是少即最少依赖原则
开闭原则
1. 定义
对修改关闭对扩展开放
❤️2. 怎么理解
不用修改已有的类只通过新增代码达到添加功能的目的
3. 怎么记住他
对修改关闭对扩展开放
设计模式的分类
此处不展开
创建型模式
工厂方法模式抽象工厂模式单例模式建造者模式原型模式
结构型模式
适配器模式桥接模式装饰模式组合模式外观模式享元模式代理模式
行为模式
策略模式模版方法模式观察者模式迭代器模式责任链模式命令模式备忘录模式状态模式访问者模式中介者模式解释器模式
~理解有限有错再补