设计模式概念
设计模式是开发人员为了解决一些软件开发中的问题而总结出来的经验套路。并且可以反复使用的
设计模式的分类
- 创建型:不使用new创建对象,隐藏对象的创建细节,你只需要传不同的参数进去就能得到不同的对象
- 结构型:这些设计模式关注类和对象的组合
- 行为形:这些设计模式特别关注对象之间的通信。
常见设计模式
单例、多例、工厂模式、抽象工厂模式、代理模式、装饰者模式
工厂模式
抽象工厂模式
对多个工厂再词进行抽象,俗称工厂的工厂
单例模式
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例。
关键代码:构造函数是私有的
饿汉单例模式
类加时是就创建了对象,并且线程安全,执行效率高(因为没有加锁)
懒汉单例模式
线程不安全:
线程安全:
双重校验锁:
volatile关键字的作用:保证了变量的可见性(visibility)。被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象。
原型模式(多例)
是用于创建重复的对象,同时又能保证性能。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式
** 实现细节**克隆操作,在 JAVA 继承 Cloneable,重写 clone()
建造者模式(有点复杂,之后完善)
使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
注意事项:与工厂模式的区别是 建造者模式更加关注与零件装配的顺序。