合聚咖

合聚咖

十种常见的设计模式

admin

单例模式:此模式确保一个类只有一个实例,并提供一个全局访问点。实现包括将构造方法设为私有,添加静态成员变量存储实例,提供公共函数创建实例。适用于频繁访问、创建成本高、需要共享的状态信息,如数据库连接、日志管理等。避免对象频繁创建与销毁,节省资源。

策略模式:通过定义公共接口和抽象类,多个具体策略类实现接口。环境类封装策略类,客户端通过环境类切换策略。用于管理算法族,避免多重条件语句,降低代码复杂度。适用于算法或行为需动态选择的场景,如排序算法。

代理模式:分为静态和动态代理,静态代理通过接口和代理类实现,代理类维护真实类引用,为客户端调用。动态代理要求实现接口,通过反射创建代理实例。用于扩展类功能,如权限验证、日志记录。静态代理适用于明确的代理需求,动态代理适用于接口明确的场景。

观察者模式:定义角色抽象类管理观察者添加、删除和通知,具体观察者实现抽象类,维护角色抽象类实例集合。用于事件驱动、数据共享场景。推模型主动通知,拉模型被动获取。适用于需要透明更新状态的组件间通信。

装饰模式:定义抽象装饰角色,具体装饰类继承装饰角色,实现扩展功能。适用于动态扩展对象功能,无需继承。适用于增加可选功能、灵活组合功能的场景。

适配器模式:通过适配器类将一个类的接口转换为另一个接口,实现类间协作。分为类适配器、对象适配器和缺省适配器三种形式。适用于接口不匹配、需要复用现有类、扩展功能等场景,提高系统扩展性和复用性。

命令模式:将请求封装为对象,实现操作参数化、请求排队、日志记录和撤销功能。适用于抽象操作、执行顺序、取消和日志记录等场景。

组合模式:构建树形结构表示部分-整体层次关系,提供统一接口处理单个或组合对象。适用于需要实现部分整体层次结构、统一处理场景。

简单工厂模式:通过工厂类创建产品类实例,根据参数决定产品类型。适用于创建多个相似产品的场景,简化创建逻辑。

模板方法模式:父类定义方法调用顺序,子类实现具体方法。适用于封装不变行为、扩展可变行为的场景,如算法框架、配置管理等。