Java-设计模式
reference-site-list
steps
- 常见设计模式
设计模式列表
- 单例模式
- 工厂模式
- 代理模式
- 观察者模式(发布-订阅模式)
单例模式
单例模式是一种常用的软件设计模式,在应用这个模式时,单例对象的类必须保证只有一个实
例存在,整个系统只能使用一个对象实例。
优点:不会频繁地创建和销毁对象,浪费系统资源。
可能这会需要你手写一个单例模式,这就得自己去学了,因为单例模式有很多种写法,懒汉模式,
饿汉模式,双重检查模式等。懒汉模式就是用的时候再去创建对象,饿汉模式就是提前就已经加载
好的静态static对象,双重检查模式就是两次检查避免多线程造成创建了多个对象。
单例模式有很多种的写法,我总结一下:
(1)饿汉式单例模式的写法:线程安全
(2)懒汉式单例模式的写法:非线程安全
(3)双检锁单例模式的写法:线程安全
- 懒汉式单例
Singleton.java
1 | package tech.xplorist.y2021.m11.d21; |
- 双检锁单例
1 | package tech.xplorist.y2021.m11.d21; |
工厂模式
工厂模式有3种:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 简单工厂模式
产品接口,具体产品类,工厂类。产品的创建通过工厂类的静态方法,工厂类根据产品名称来创建相应的产品。
一个工厂里生产多种键盘,既生产机械键盘,也生产薄膜键盘。
- 工厂方法模式
产品接口,具体产品类,工厂接口,具体工厂类。一个具体产品对于一个具体工厂。只有一种类型的产品,而具体工厂只生产对于的具体产品,工厂只有具体产品类型的区分。
每个工厂只生产一种类型的键盘,生产机械键盘的工厂,生产薄膜键盘的工厂。
- 抽象工厂模式
不同类型的产品接口,具体产品类,抽象工厂类,不同品牌的具体工厂类。一个具体产品会有工厂和产品类型两种属性,比如xxx工厂生产的yyy产品。具体工厂不仅有产品的类型的属性,还有品牌的属性。
每个工厂只生产该品牌的一套产品,一套产品里有键盘和鼠标两种产品,华硕工厂只生产华硕的鼠标和键盘,戴尔工厂生产戴尔的鼠标和键盘。
代理模式
具体的行为由代理类去调用被代理类的方法,隐藏了方法的源头。
顾客通过代理商去买东西,而代理商实际上不生产产品,产品是从厂家那里拿货。
正向代理:客户端通过VPN去访问服务器,服务器只能知道请求来自VPN,VPN代理了客户端,从而隐藏了客户端。
反向代理:服务器通过Nginx进行反向代理,客户端去访问Nginx,Nginx代理了服务器,从而隐藏了服务端。
静态代理:代理的代码在运行前就已经创建好了。
动态代理:代理的代码在运行的时候才去根据被代理的对象动态生成,重点在于运行时生成。
观察者模式
观察者模式又叫做发布订阅模式,发布方发布内容,要主动通知订阅方。
发布方内部维护了一份订阅方的列表,当发布方发布新消息,会主动给列表里的每个订阅者发送通知。
- 本文标题:Java-设计模式
- 本文作者:Xplorist
- 创建时间:2021-11-21 17:37:00
- 本文链接:https://xplorist.tech/2021/11/21/247a4a033e9e/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!