随笔分类 - 01_设计模式_常用
摘要:MVC 设计模式:让代码架构更清晰 一、什么是 MVC 设计模式? MVC 全称是Model(模型)、View(视图)、Controller(控制器),它不是一种具体的技术,而是一种 “分而治之” 的代码架构思想。核心逻辑是将软件系统的三大核心功能 ——数据处理、界面展示、用户交互—— 拆分成三个独
阅读全文
摘要:委托模式 (Delegate) 意图 两个对象参与处理同一个请求,接收请求的对象将请求委托给另一个对象来处理。 委托模式的核心思想是:一个对象将某些职责交给另一个专门的对象去完成,从而实现职责的分离和代码的复用。 UML 图 优点 职责清晰分离:将具体实现逻辑与调用逻辑分离,每个类专注于自己的职责
阅读全文
摘要:解释器模式(Interpreter) 意图 给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 UML 图 优点 易于扩展文法:由于使用类来表示语言的文法规则,可以通过继承来扩展文法 易于实现文法:实现文法中的每个规则都很简单,可以方便地改变和扩展文法
阅读全文
摘要:访问者模式(Visitor) 意图 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 UML 图 优点 开闭原则:容易添加新的访问者操作,无需修改元素类 单一职责原则:将相关行为集中到一个访问者对象中 灵活性:可以在运行时选择不同的访问者执行
阅读全文
摘要:备忘录模式(Memento) 意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后可以将该对象恢复到原先保存的状态。 UML 图 优点 封装性好:不暴露对象的实现细节,保持对象的封装性 状态恢复简单:可以轻松实现撤销/重做功能 状态管理集中:将状态保存和恢复的逻
阅读全文
摘要:中介者模式(Mediator) 意图 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 UML 图 优点 降低耦合度:将对象间的一对多关联转变为一对一的关联,减少对象间的依赖 集中控制:将交互逻辑集中到中介者中,使得交互
阅读全文
摘要:迭代器模式(Iterator) 意图 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 UML 图 优点 简化访问接口:提供统一的遍历接口,简化客户端代码 封装内部结构:隐藏聚合对象的内部表示,提高安全性 支持多种遍历:可以在同一聚合上实现多种遍历方式 开闭原则:增加新的聚合
阅读全文
摘要:模板方法(Template Method) 意图 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法结构的情况下,重新定义算法中的某些特定步骤。 UML 图 优点 代码复用:将公共行为移到父类中,避免代码重复 封装不变部分:固定算法结构,保护核心算法不被修改 扩展性好
阅读全文
摘要:责任链模式(Chain of Responsibility) 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 UML 图 优点 降低耦合度:请求发送者不需要知道哪个对象处理请求 动态组合:可以动态地
阅读全文
摘要:状态模式(State) 意图 允许对象在内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 UML 图 优点 行为与状态绑定:将特定状态下的行为局部化到对应的状态类中 消除条件判断:避免了大量的if-else状态判断逻辑 状态转换明确:使状态转换流程更加清晰和可管理 易于扩展:新增日常状态不需
阅读全文
摘要:命令模式(Command) 意图 将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,支持请求的排队、记录日志、撤销等操作。 UML 图 优点 解耦调用者和接收者:调用者不需要知道接收者的具体实现 支持命令的排队和日志:可以轻松实现命令队列和日志记录 支持撤销和重做:通过维护命令历史
阅读全文
摘要:观察者模式(Observer) 意图 定义对象间的一对多依赖关系,当一个对象改变状态时,所有依赖者都会收到通知并自动更新。 UML 图 优点 松耦合:主题和观察者之间抽象耦合,彼此不需要知道具体实现 支持广播通信:一个主题可以通知多个观察者 开闭原则:可以轻松添加新的观察者而不修改主题 状态同步:确
阅读全文
摘要:策略模式(Strategy) 意图 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 UML 图 优点 开闭原则:可以在不修改上下文的情况下引入新的策略 避免条件语句:消除了大量的if-else或switch-case语句 算法复用:不同的上下文
阅读全文
摘要:享元模式(Flyweight) 意图 运用共享技术有效地支持大量细粒度的对象,通过共享相似对象来减少内存使用和提高性能。 UML 图 优点 减少内存使用:通过共享相似对象,显著减少内存占用 提高性能:减少了对象创建和垃圾回收的开销 简化对象管理:集中管理共享对象,便于维护和扩展 支持大量对象:能够有
阅读全文
摘要:组合模式(Composite) 意图 将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 UML 图 优点 简化客户端代码:客户端可以一致地处理单个对象和组合对象,无需区分 易于扩展:可以很容易地增加新的组件类型 灵活的层次结构:可以构建复杂的
阅读全文
摘要:桥接模式(Bridge) 意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 UML 图 优点 分离抽象和实现:将抽象接口与实现细节彻底分离,两者可以独立演化 提高扩展性:可以独立地对抽象部分和实现部分进行扩展,而不影响对方 实现细节对客户透明:客户端只需要关注抽象接口,不需要了解具体的实
阅读全文
摘要:外观模式(Facade) 意图 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 UML 图 优点 简化客户端使用:客户端不需要了解系统内部的复杂实现,只需要与外观对象交互 降低耦合度:将客户端与子系统解耦,使得子系统的变化不会影响到客户端 提
阅读全文
摘要:装饰器模式(Decorator) 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 UML 图 优点 灵活性高:比继承更灵活,可以在运行时动态地添加或撤销功能 避免类爆炸:通过组合而非继承来扩展功能,避免了子类数量过多的问题 符合开闭原则:可以在不修改现有代
阅读全文
摘要:适配器模式(Adapter Pattern) 意图 将一个类的接口转换成客户端期望的另一个接口。适配器让那些接口不兼容的类可以一起工作。 UML 图 优点 解耦性好:将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无需修改原有代码 提高了类的复用性:可以让多个不相关的类协同工作,
阅读全文
摘要:原型模式 (Prototype Pattern) 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式的核心在于“复制”或“克隆”一个现有的、已经配置好的对象,而不是通过new关键字重新构建并一步步设置其状态。这在以下场景非常有用: 当一个系统应该独立于它的产品创建、构成
阅读全文

浙公网安备 33010602011771号