尚硅谷-设计模式篇

​ 只学了点理论概念,没有实操代码,感觉无论是项目架构、代码设计,还是团队人员管理,其实都是设计模式的具体落地实现。

https://www.bilibili.com/video/BV1G4411c7N4?p=149&vd_source=510ec700814c4e5dc4c4fda8f06c10e8

csdn csdn csdn csdn csdn


🔥1. 基本概念

1.1. 基本名词
1.1.1 设计模式用途

​ 面向对象->功能模块(设计模式+算法数据结构)->框架(多种设计模式)->架构(服务器集群)。实际开发中,就是要考察不同场景变更下,项目用到的设计模式是否能功能变更兼容,就是为了让代码拓展性更好,代码复用性更强,可读性更好,高内聚低耦合各个系统互不干扰

1.1.2 七大原则
  1. 单一职责原则:每个类或者方法就是负责单一个功能
  2. 接口隔离原则:每个接口功能只给全部用到的人,非全部用到的就要拆分出来接口,就是不要把接口功能都混在一起
  3. 依赖倒置原则:每个功能尽量用抽象类或者接口封装
  4. 里氏替换原则:子类用父类方法、变量尽量不要重写,保证功能不要有变更
  5. 开闭原则:已有的代码尽量保证拓展开发,而对原有代码修改的关闭
  6. 迪米特原则:对象与对象之间保证最少的关系,尽量不要类和类之间互相调用
  7. 合成复用原则:优先用聚合(B类中定义一个A),避免用继承

​ 总结:就是减少类和类之间的关系,保证每个类功能独立,避免修改,对于重复功能能复用代码就复用,拆成接口来进行复用,便于管理。

1.1.3 UML
1.1.3.1 基本概念

​ 类与类之间的关系

image-20220816103215770

1.2 设计模式
1.2.1 基本分类

​ 创建型,结构型,行为型

image-20220816112858637

1.2.2 创建型模式
1.2.2.1 单例模式*

​ 饿汉式:类加载就申请,会导致内存浪费

​ 懒汉式:用到再new

​ DCL双重检测:volatile变量判断 + synchronized类修饰保证单例

1.2.2.2 工厂模式*

​ 工厂就类似一个抽象类或者接口,由各自实现类自己去实现

1.2.2.3 原型模式

​ 相同的对象要统一赋值,new多个比较麻烦,就用clone赋值

1.2.2.4 建造者模式

​ 就是把一个功能定义成多步,然后自己实现供外部调用,和工厂不同的是建造者类似于一个模板定义好了的,而工厂模式可以随意改变内部功能。

1.2.2.5 小结

​ 总的来说,创建型就类似一个功能类,是拆分实现,还是要复用,还是把功能都提取出来定义成一个接口,在实际开发中为了简化代码,

1.2.3 结构性模式
1.2.3.1 适配器模式

​ 就是为了兼容某个接口,弄个接口适配器,比如两个对象都继承一个父类,这样利用父类转换就没问题了

1.2.3.2 桥接模式

​ 就是把抽象接口和功能分层,避免把各个层次管理分开,比如手机样式和手机分开,这样只用改一部就行了。

1.2.3.3 装饰者模式*

​ 在原始功能上增加,不变动之前代码

1.2.3.4 组合模式

​ 就是针对一对多的场景,之前是采用继承,但是实际应该弄成树形一对多的组合关系

1.2.3.5 外观模式

​ 就是对多个子接口功能包装一个新功能来进行调用。

1.2.3.6 享元模式

​ 共享对象,就是一个功能要重复利用修改的话,尽量做成可配置化拆分修改的

1.2.3.7 代理模式*

​ 使用一个代理,Spring-jdk, cglib就是这种

1.2.3.8 小结

​ 结构性就是各个功能之间关联,是共享,还是代理,还是要统一管理,拆分开来

1.2.4 行为型模式
1.2.4.1 模板方法模式

​ 模板方法就是父类里面定义的模板,方便子类复用。

1.2.4.2 命令模式

​ 就是发起者和调用者之间弄个命令队列,可以终止,重试,等等

1.2.4.3 访问者模式

​ 就是在调用的类上加一个访问者接口,统一管理

1.2.4.4 迭代器模式

​ 就是用迭代器遍历管理对象

1.2.4.5 观察者模式*

​ subject一个变化,通知多个observer。

1.2.4.6 中介者模式

​ MVC中C就是介于代码和视图之间的中介者,起到一个平衡作用

1.2.4.7 备忘录模式

​ 就是记录用户之前步骤,使功能可以回退

1.2.4.8 解释器模式

​ jvm里面解释代码

1.2.4.9 状态模式

​ 就是利用状态来控制、观察代码流程,减少if-else判断,增加代码拓展性

1.2.4.10 策略模式

​ 减少继承,多用组合。代码分为变化的和不变的,频繁变化的就开放,不变的就关闭

1.2.4.11 责任链模式

​ 请求和处理分开,一个链路分成多个结点

1.2.4.12 小结

​ 行为型更多在于系统流程处理,中间观察者这种就设计到mq,责任链又涉及到异步线程池,链路拆分这些,备忘录又设计到历史数据记录与回退,状态模式又涉及到每个步骤的记录存储。


1.2.5 个人总结

image-20220816191706475


共150讲,时长共 33小时18分钟 1) 优秀的程序应该是这样的:阅读时,感觉很优雅;新增功能时,感觉很轻松;运行时,感觉很快速,这就需要设计模式支撑。 2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,但是不知道怎么使用到真实项目。本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,比如 单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等 3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种实现)、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式(3种实现)、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式(3种实现)。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员能掌握主流设计模式,规范编程风格,提高优化程序结构和效率的能力
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福宇乔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值