设计模式

前言

各种知识多而且容易遗忘,还不容易复习。最好的方法当然是自己给自己提问,不断补缺查漏,缺什么补什么。本文将各类知识归类,并将全文知识点浓缩在自问自查中,并且都写好目录,自问自查时可以随时跳转过去,方便大家系统的学习复习知识。 水平有限,有错误敬请指正

食用方法
自问自查—阅读原文—自问自查–阅读原文…
无限循环


自查自问

1. 设计模式的几大原则
2. 写一个单例模式  java中的单例
3. 几种工厂模式的优缺点  概念   java中的工厂


设计模式的原则

设计模式同样让开发人员之间有一套“共享词汇”,一旦懂这些词汇,开发人员之间沟通这些观念就很容易

模式就像武侠小说中的招式一样,它提供了许多开发过程中的方法和套路,可使人们更加方便简单地复用成功的设计模式和结构。

单一职责原则:
在这里插入图片描述
如果一个类承担太多功能,这些功能的耦合度就会非常高,其中的每个功能改变都要修改该类,很容易影响到其他类。

开放封闭原则:
在这里插入图片描述

依赖倒转原则:
在这里插入图片描述
里氏替换原则:
在这里插入图片描述

单例设计模式

在这里插入图片描述
第一次判断是为了防止即使已经生成了实例一直去竞争锁
第二次新判断 因为同时等待锁的有可能有多个线程,当第一线程释放锁之后,后面的线程得到锁就可以进入这个方法 * 这时如果不进行判断的话很有可能就会创建多个实例.

在这里插入图片描述在这里插入图片描述

工厂模式

https://blog.csdn.net/zxt0601/article/details/52798423?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
简单工厂:一个工厂类 (Integer.valueOf 就是简单工厂)
工厂方法模式:
一个抽象工厂 可以有多个工厂实例 由用户选择工厂
抽象工厂模式:
有多个抽象产品类,用户可以选择工厂还可以创建不同的产品

简单工厂:是一个具体的工厂类,有一个cread(int type)的静态方法,通过Switch或if 判断create的参数 选择要在工厂类里面创建的类

将客户类和要创建的类解耦 客户类不需要知道创建类的内部。
缺点
1 扩展性差(我想增加一种面条,除了新增一个面条产品类,还需要修改工厂类方法)
2 不同的产品需要不同额外参数的时候 不支持(拉面加辣)。
在这里插入图片描述
在这里插入图片描述

工厂方法模式: Executors
小A(工厂)当雷锋帮助老人 ,小A受伤了,让小B(工厂) 去帮助老人
小A小B毕业了 由社区志愿者(工厂)去照顾老人 小A小B 和社区志愿者 都是 雷锋(接口) 都会 打扫 聊天(接口中的方法)
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样可以缓解工厂的压力让子工厂承担一些
并且将使用哪个工厂的权力给了客户
在这里插入图片描述
产品类:同上
在这里插入图片描述
在这里插入图片描述

抽象工厂:工厂里有多个产品 客户不仅可以选择工厂 还可以选择创建工厂中不同的对象。
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210220180105503.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MDIxMjA3,size_16,color_FFFFFF,t_70

在这里插入图片描述


自查自问

1. 
2. 
3. 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值