设计模式
设计原则:高内聚,低耦合
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路
GoF23
它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
单例模式
当在高并发的情况下,假设一秒钟main方法执行了上千次/上万次user对象反复创建,对资源占用严重
这就需要我们使用单例模式:只创建一个对象
创建形式:饿汉式,懒汉式
饿汉式
类加载时创建
创建的时机不一样
-
私有化的静态属性
-
私有化构造方法(在别的类中不可以创建对象)
-
提供一个公开的静态的方法(返回1步骤中的对象属性)
在其他类中创建对象时不可以new
懒汉式
线程不安全
- 私有化静态属性
- 私有化构造方法(再别的类中无法创建对象)
- 提供公开的静态的方法(返回1中对象属性)
返回对象的方法在第一次被调用时才会创建对象,后续直接返回第一次调用的对象
调用时创建
升级版线程安全的懒汉式 synchronized,相对于降低效率
双检锁double-check
饿汉式,懒汉式(线程安全的,线程不安全,双重校验—double check)
简单工厂模式
用途:主要解决接口选择的问题。在不同情况下创建不同的实现类对象
步骤
- 一个接口多个实现
- 创建一个工厂类,工厂类中包含公开的静态的方法(返回值接口类型,方法包含参数:根据不同的情况)
- 方法体中分析不同的情况,创建不同的接口实现类对象
- 将创建的实现类对象返回出去
抽象工厂模式
一个工厂已经解决不了问题
理解:工厂的工厂 ,如何选择工厂
观察者模式
解决的问题:当对象存在一对多时,一的对象发生改变时,所有依赖这个对象的其他对象都会得到通知
班级dept(一)对应学生student(多)班级地址改了;学生都应该得到通知;
观察者模式:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。
别名
- 发布-订阅(Publish/Subscribe)模式
- 模型-视图(Model/View)模式
- 源-监听器(Source/Listener)模式
- 从属者(Dependents)模式
开闭原则:对扩展开放,对修改关闭
里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立
依赖倒置原则:要面向接口编程,不要面向实现编程。
单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。
接口隔离原则:要为各个类建立它们需要的专用接口
迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话。
合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。