前言
各种知识多而且容易遗忘,还不容易复习。最好的方法当然是自己给自己提问,不断补缺查漏,缺什么补什么。本文将各类知识归类,并将全文知识点浓缩在自问自查中,并且都写好目录,自问自查时可以随时跳转过去,方便大家系统的学习复习知识。 水平有限,有错误敬请指正食用方法
自问自查—阅读原文—自问自查–阅读原文…
无限循环
自查自问
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 和社区志愿者 都是 雷锋(接口) 都会 打扫 聊天(接口中的方法)
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样可以缓解工厂的压力让子工厂承担一些
并且将使用哪个工厂的权力给了客户
产品类:同上
抽象工厂:工厂里有多个产品 客户不仅可以选择工厂 还可以选择创建工厂中不同的对象。
自查自问
1.
2.
3.