
设计模式
文章平均质量分 89
详细介绍23种设计模式,共有3类:
一、创建型设
1工厂方法,2抽象工厂,3单例,4、建造者,5、原型
二、结构型
1适配器,2装饰器,3代理,4外观,5桥接,6组合,7享元
三、行为型:
1策略,2模板方法,3观察者,4迭代器,5责任链,6命令,7备忘录,8状态,9访问者,10中介者,11解释器。
拾光编程
一个老程序员,在剩余的时光里,记录编程的点点滴滴。
展开
-
常见面试题之设计模式
面试中涉及到设计模式的常见题目及参考答案原创 2024-12-07 11:58:48 · 987 阅读 · 0 评论 -
设计模式之解释器模式
解释器模式是一种强大的设计模式,它通过将复杂的语言或表达式转换为一系列简单的规则,并通过解释器逐个解释和执行这些规则,从而实现了对语言或表达式的解析和操作。解释器模式适用于需要解释和处理特定语言或表达式的场景,如编程语言解释器、查询语言解析器、正则表达式解析器等。虽然解释器模式具有易于扩展、灵活性高和代码清晰等优点,但也存在类膨胀、性能问题和实现复杂等缺点。因此,在使用解释器模式时,需要根据具体的应用场景和需求进行权衡和选择。原创 2024-10-04 16:21:48 · 1331 阅读 · 0 评论 -
设计模式之中介者模式
在软件设计中,对象间的复杂交互常导致系统难以维护和扩展。中介者模式作为一种行为型设计模式,通过引入中介者对象来封装对象间的交互,降低了它们之间的直接依赖,从而提升了系统的灵活性和可维护性。此模式定义了四种角色:抽象中介者、具体中介者、抽象同事类和具体同事类。中介者模式的核心功能包括降低对象耦合性、提高系统灵活性以及简化维护和扩展。它适用于对象间存在复杂引用关系、一个对象引用众多其他对象,或希望通过中间类封装多个类行为的场景。具体应用场景如聊天室系统、航空管制系统、MVC框架和微服务架构中的API网关。原创 2024-10-04 13:44:09 · 1591 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式是一种强大的设计模式,它通过将数据结构与数据操作分离,使得系统更加灵活和可扩展。然而,它也有一些缺点,如增加新的数据结构困难、破坏封装等。因此,在使用访问者模式时,需要权衡其优缺点,并根据具体的应用场景进行选择。在实际开发中,访问者模式通常适用于需要对一个对象结构中的对象进行很多不同并且不相关的操作的场景。在这些情况下,使用访问者模式可以避免让这些操作“污染”这些对象的类,从而保持代码的清晰和简洁。原创 2024-10-02 21:12:17 · 1552 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式是一种非常有用的行为型设计模式,它允许在不破坏对象封装性的前提下,捕获和存储对象的内部状态,并在需要时进行恢复。该模式广泛应用于需要保存和恢复数据、提供撤销操作、避免重复计算等场景。通过合理的设计和实现,备忘录模式可以大大提高软件的灵活性和可维护性。然而,它也存在一些缺点,如资源占用和实现复杂度等,需要在具体应用中权衡利弊。原创 2024-10-01 22:56:15 · 1062 阅读 · 0 评论 -
设计模式之命令模式
命令模式是一种非常强大和灵活的设计模式,它将请求封装为对象,从而使得请求的发送者和接收者解耦。命令模式不仅支持基本的执行操作,还支持撤销、重做、事务性操作、延迟执行和异步执行等高级特性。通过合理地使用命令模式及其扩展和变体,可以大大简化代码的结构和逻辑,提高系统的可扩展性和可维护性。在实际应用中,我们应该根据具体的需求和场景来选择合适的命令模式实现方式,并结合其他设计模式和技术来构建更加复杂和高效的系统。原创 2024-10-01 17:30:14 · 1392 阅读 · 0 评论 -
设计模式之责任链模式
责任链模式是一种行为型设计模式,通过创建对象链来解耦请求的发送者和接收者。该模式涉及抽象处理者、具体处理者和客户端三个角色,请求在链上传递直到被处理或到达链尾。其优点在于解耦请求与处理、提高系统灵活性和简化代码。责任链模式广泛应用于请求处理链、日志记录、身份认证、资源分配和异常处理等场景。原创 2024-09-29 21:40:27 · 1407 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式是一种行为型设计模式,旨在提供一种方法顺序访问聚合对象中的元素,同时保持对聚合对象内部结构的封装。它包含迭代器、具体迭代器、聚合和具体聚合四个角色。迭代器模式的应用场景广泛,如访问聚合对象内容而不暴露其内部表示、支持多种遍历方式以及为不同聚合结构提供统一接口。此外,迭代器模式在软件设计中具有封装性、灵活性和可扩展性的重要性,并广泛应用于电商平台商品列表遍历、文件系统遍历和数据库查询结果遍历等实际案例中。原创 2024-09-27 21:16:32 · 875 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式是一种非常实用的设计模式,它通过定义对象之间的一对多依赖关系,实现了松耦合的系统设计。该模式在多种应用场景中发挥着重要的作用,特别是在需要处理对象之间的松耦合关系、实时通知和更新的情况下。通过Java代码示例和实际案例的展示,我们可以更加深入地理解观察者模式的概念、原理和应用场景。希望这篇文章能够帮助读者更好地掌握观察者模式,并在实际软件开发中灵活运用它来提高代码的质量和系统的可维护性。原创 2024-09-26 22:03:49 · 1207 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式是一种非常有用的设计模式,它通过定义算法的框架,将算法中的一些步骤延迟到子类中实现,从而在不改变算法结构的前提下,允许子类灵活地定义算法的具体步骤。这种模式在软件开发中广泛应用于需要固定算法结构但某些步骤实现可能变化的场合,如框架和库的设计、业务流程的处理等。通过模板方法模式,我们可以提高代码的复用性、灵活性和可扩展性,同时保持算法结构的稳定性。原创 2024-09-24 22:18:19 · 1045 阅读 · 0 评论 -
设计模式之策略模式
策略模式是一种行为型设计模式,通过定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。它包含策略接口、具体策略类和上下文类。策略模式的核心在于算法定义与使用的分离,提高了代码的灵活性、可维护性和可扩展性。适用于算法多、需动态选择、需隐藏算法细节等场景。Java示例展示了电商促销策略的应用,通过策略接口和具体策略类实现不同促销算法,上下文类维护策略对象并应用算法。原创 2024-09-24 22:01:32 · 1111 阅读 · 0 评论 -
设计模式之享元模式
享元模式是一种有效的结构型设计模式,它通过共享对象来减少内存使用和提高系统性能。在需要处理大量相似对象的场景中,享元模式能够显著减少对象的数量,从而降低内存消耗和提高性能。然而,享元模式的实现也需要考虑对象的内部状态和外部状态的分离以及线程安全等问题。通过合理应用享元模式,开发人员可以优化系统设计,提高代码的可维护性和可扩展性。原创 2024-09-22 22:10:48 · 1007 阅读 · 0 评论 -
设计模式之复合模式
组合模式通过将对象组合成树形结构来表示“部分-整体”的层次关系,简化了客户端代码,提高了系统的扩展性和灵活性。然而,它也存在设计复杂和潜在的性能问题。在实际应用中,应根据具体场景和需求来选择合适的设计模式。原创 2024-09-22 21:37:59 · 1229 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式通过将抽象部分与实现部分分离,使得这两者可以独立地变化。这种模式非常适合于那些存在多个变化维度的情况,通过将这些维度分离,我们可以更加灵活地管理和扩展系统。在实际开发中,桥接模式可以应用于很多场景,如UI框架中的视图与模型的分离、数据库操作中的DAO层与Service层的分离等。通过合理地应用桥接模式,可以使我们的代码更加模块化、易于维护和扩展。原创 2024-09-21 22:44:43 · 1122 阅读 · 0 评论 -
设计模式之外观模式
外观模式过提供一个统一的接口来简化对多个子系统的调用,从而使得系统的使用变得更加容易。在实际项目中,您可以根据需要扩展更多子系统以及它们的功能,从而减少代码的复杂度和长度。原创 2024-09-20 22:57:03 · 835 阅读 · 0 评论 -
设计模式之代理模式
代理模式是一种非常有用的设计模式,它可以在不修改原始类代码的情况下,通过引入代理类来给原始类附加额外的功能或控制。在Java中,静态代理和动态代理是实现代理模式的两种主要方式,它们各自适用于不同的场景。静态代理在编译时就确定了代理类和被代理类的关系,而动态代理则在运行时动态生成代理类。理解并掌握代理模式对于提高代码的可维护性和可扩展性具有重要意义。原创 2024-09-20 22:29:17 · 1187 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式是一种强大的设计模式,它允许我们动态地给对象添加额外的职责,从而扩展对象的功能。通过灵活地使用装饰器模式,我们可以构建出既灵活又易于维护的系统。原创 2024-09-19 22:07:17 · 1635 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式是一种非常有用的设计模式,它允许我们将不兼容的接口进行适配,使得原本不能一起工作的类可以一起工作。在软件开发中,我们经常会遇到接口不兼容的问题,使用适配器模式可以很好地解决这些问题。然而,我们也需要注意到适配器模式的缺点,避免过度使用导致系统变得复杂和难以理解。原创 2024-09-19 21:45:47 · 1506 阅读 · 0 评论 -
设计模式之原型模式
原型模式是一种强大的创建型设计模式,它允许通过复制现有对象来创建新对象。在 Java 中,实现原型模式通常依赖于 Object 类的 clone() 方法,但需要注意 clone() 方法默认执行的是浅拷贝,并且需要实现 Cloneable 接口。此外,原型模式在性能优化、避免复杂构造函数和动态对象创建等方面具有显著优势,但也存在需要为每个类实现克隆方法和处理深拷贝等缺点。原创 2024-09-17 10:05:47 · 1117 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式是一种强大的设计模式,它允许我们通过组合不同的组件来构建复杂对象,同时保持构建过程的灵活性和可扩展性。通过定义抽象建造者接口和具体建造者实现类,我们可以将产品的构建过程与产品的表示分离,从而实现更好的封装和复用。此外,建造者模式还提供了很好的扩展性,使得我们可以在不修改原有代码的情况下添加新的具体建造者类来构建新的产品。原创 2024-09-16 22:00:41 · 1118 阅读 · 0 评论 -
设计模式之单例模式
单例模式是一种简单而强大的设计模式,它通过确保一个类只有一个实例来简化对共享资源的访问和管理。在实际应用中,我们应该根据具体需求和场景来选择合适的单例实现方式,并注意解决线程安全、延迟加载、序列化等问题。同时,也要避免滥用单例模式,保持代码的清晰和可维护性。原创 2024-09-16 17:08:47 · 1309 阅读 · 0 评论 -
设计模式之抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在抽象工厂模式中,客户端不依赖于产品类实例如何被创建、组合和表达的细节,这是通过使用一个共同的接口来指向新的或现有的产品类。原创 2024-09-15 16:31:23 · 1661 阅读 · 0 评论 -
设计模式之工厂方法模式
工厂方法模式是一种非常实用的设计模式,它通过定义一个用于创建对象的接口,让子类决定实例化哪一个类。这种方式将对象的创建逻辑封装在工厂类中,使得客户端代码与具体的产品类解耦,提高了系统的灵活性和可扩展性。同时,工厂方法模式也具有一定的局限性,如类的个数容易过多、系统扩展繁琐等。因此,在设计系统时,需要根据实际情况选择合适的设计模式。原创 2024-09-15 13:05:19 · 1171 阅读 · 0 评论