设计模式
设计模式:
设计模式: 软件设计当中常见问题的典型解决方式,利用建筑设计模式的思想去优化代码
要求:
高内聚
,低耦合
,可扩展
,可复用
六大原则:
单一职责(
一个类和方法只去做一件事
)里氏替换(
多态,子类可以扩展父类
)依赖倒置(
细节依赖抽象,下层依赖上层
)接口隔离(
建立单一接口
)迪米特原则(
最少知道,降低耦合
)开闭原则(
抽象架构,扩展实现
)
重点: 单例模式、工厂模式、代理模式,三选一
单例模式中的双重锁校验代码
创建型模式:
1. 工厂方法:
业务场景
:多种类型商品不同接口,统一发奖服务搭建场景实现要点
: 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行
简单实现:参考菜鸟教程(基础版本)
简单工厂模式:
不是一个正式的设计模式,但它是工厂模式的基础.它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。
应用实例 :
货物制造:你需要一种货物,只需从工厂提货,而不需要关心货物的制造过程及其内部实现。
优点 :
- 调用者只需要知道对象的名称即可创建对象。
- 扩展性高,如果需要增加新产品,只需扩展一个工厂类即可。
- 屏蔽了产品的具体实现,调用者只关心产品的接口。
缺点 :
每次增加一个产品时,都需要增加一个具体类和对应的工厂,使系统中类的数量成倍增加,增加了系统的复杂度和具体类的依赖。
结构 :
- 抽象产品(Abstract Product):定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口,规定了产品对象的共同方法。
- 具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。
- 抽象工厂(Abstract Factory):声明了创建产品的抽象方法,可以是接口或抽象类。它可以有多个方法用于创建不同类型的产品。
- 具体工厂(Concrete Factory):实现了抽象工厂接口,负责实际创建具体产品的对象。

自己写的实现代码:
2. 抽象工厂:
业务场景
:替换Redis双集群升级,代理类抽象场景实现要点
: 提供一个创建一系列相关或者相互依赖对象的接口,而无需要去指定它们的具体的类
简单代码实现:参考菜鸟教程
超级工厂
围绕一个超级工厂去创建其他工厂,该超级工厂又被称为其他工厂的工厂,此类设计模式属于创建型模式
对应接口
:负责创建一个相关对象的工厂,不需要显式的指定它们的类,每个生成的工厂都能够按照工厂模式提供对象应用实例:
比如一个汽车行业公司只负责决策,其下有多个子公司生产不同的车
汽车行业总公司:抽象工厂
对应的下属子公司:实例工厂
下属子公司生产出来的车:实际的对象
优点:
- 确保同一产品族的对象一起工作
- 客户端不需要知道每个对象的具体类,简化了代码
缺点:
扩展产品族非常困难。增加一个新的产品族需要修改抽象工厂和所有具体工厂的代码。
结构:
- 抽象工厂(Abstract Factory):声明了一组用于创建产品对象的方法,每个方法对应一种产品类型。抽象工厂可以是接口或抽象类。
- 具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体产品对象的实例。
- 抽象产品(Abstract Product):定义了一组产品对象的共同接口或抽象类,描述了产品对象的公共方法。
- 具体产品(Concrete Product):实现了抽象产品接口,定义了具体产品的特定行为和属性。
实现的类似于工厂也是继承自
抽象工厂类,用一个工厂生成器去生成对应的工厂,对应的工厂再去生产继承自
不同的抽象类的实例对象.

自己写的实现代码:
3. 单例模式:
业务场景
: :seven:种设计模式,Effective java
作者推荐枚举单例模式.实现要点
: 保证一个类当中仅仅有一个实例,同时提供一个可以访问它的全局访问点.重点掌握 :单例模式中的双重锁校验代码
具体代码实现:
1 |
|