设计模式
文章平均质量分 76
懂一点的陈老师
多年开发和软件项目管理经验,喜欢用Python写算法,写些小项目,友情客串少儿竞赛培训。
展开
-
创建型设计模式-工厂模式(Factory Pattern)- python实现
工厂模式(Factory Pattern)是软件设计中常用的一种创建型设计模式,它的主要目的是用于创建对象,同时隐藏创建逻辑,而不是通过直接使用new运算符实例化对象,这样可以提高程序的灵活性。原创 2024-09-06 15:26:22 · 449 阅读 · 0 评论 -
结构型设计模式-元享(flyweight)模式-python实现
元享模式适用于那些需要大量相似对象的应用场景,通过共享对象来降低内存的使用,提高程序的性能。它特别适用于如文本编辑器、图形编辑器和游戏开发等,这些场景中通常需要创建大量的对象实例。在使用元享模式时,需要注意内在状态和外在状态的划分,确保正确地共享对象。原创 2024-09-05 10:28:52 · 659 阅读 · 0 评论 -
结构型设计模式-代理(proxy)模式-python实现
代理模式通过引入一个中介层来间接访问真实对象,它可以在不改变真实对象的情况下,增加额外的功能或控制对真实对象的访问。这种模式在软件设计中非常有用,特别是在需要控制访问、增加日志记录、事务处理或者实现远程访问等场景。原创 2024-09-05 10:27:42 · 288 阅读 · 0 评论 -
行为型设计模式-责任链(chain of responsibility)模式-python实现
责任链模式通过将请求的发送者和接收者解耦,允许动态地构建处理者链,使得请求可以在多个对象之间传递,直到被处理。这种方式特别适用于那些需要多个对象共同处理一个请求的场景,比如异常处理、工作流处理等。原创 2024-09-04 09:17:31 · 899 阅读 · 0 评论 -
行为型设计模式-命令(command)模式-python实现
命令模式通过将请求封装成对象,实现了请求的发送者和接收者之间的解耦,提高了软件系统的灵活性。它适用于需要对操作进行记录、请求排队、撤销/重做操作等场景。在图形用户界面(GUI)工具栏和菜单、数据库事务操作等领域,命令模式是非常常见的设计模式。原创 2024-09-04 09:16:31 · 744 阅读 · 0 评论 -
行为型设计模式-解释器(interpreter)模式
解释器模式适用于那些需要对特定语言进行解析和执行的应用场景。通过为文法中的每个符号和规则定义解释器类,解释器模式使得这些符号和规则可以被组合并解释执行,从而实现对语言的解析和计算。原创 2024-09-02 09:12:50 · 922 阅读 · 0 评论 -
行为型设计模式-迭代器(Iterator)模式-python实现
迭代器模式通过引入迭代器对象,实现了对聚合对象的遍历操作与聚合对象内部结构的解耦,提高了代码的灵活性和可维护性。它广泛应用于各种需要遍历数据集合的场景,比如数据库查询结果的遍历、文件系统的目录遍历等。原创 2024-09-02 09:12:00 · 884 阅读 · 0 评论 -
行为型设计模式-中介者(mediator)模式-python实现
中介者模式通过引入中介者对象,实现了对象之间通信的解耦,使得对象之间的交互更加简单、清晰。它适用于那些对象之间通信复杂、且难以跟踪和维护的场景。通过中介者模式,我们可以提高系统的模块化和可维护性。原创 2024-08-30 10:35:53 · 829 阅读 · 0 评论 -
行为型设计模式-备忘录(memento)模式
备忘录模式通过备忘录对象来捕获和存储另一个对象的内部状态,使得这些状态可以在以后被恢复,而不必暴露对象的具体实现。这种模式在需要实现撤销操作、事务操作或者状态恢复的场景中非常有用。原创 2024-08-30 10:34:33 · 690 阅读 · 0 评论 -
行为型设计模式-观察者(observer)模式
观察者模式通过解耦主题和观察者,提高了应用程序的灵活性和可扩展性。它特别适用于那些当一部分代码的变动需要通知多个其他部分,而这些部分又不应该直接相互通信的情况。观察者模式让这些部分可以独立地改变,而不会影响到其他部分。原创 2024-08-29 16:57:45 · 648 阅读 · 0 评论 -
行为型设计模式-状态(state)模式
状态模式通过将每个状态封装到独立的类中,使得状态转换和状态行为的管理变得更加清晰和灵活。它特别适用于那些具有多种状态,且状态之间转换复杂的对象。状态模式让我们能够以面向对象的方式处理复杂的逻辑,并使得代码易于理解和维护。原创 2024-08-29 16:56:34 · 694 阅读 · 0 评论 -
软件设计模式 - 汇总
每一种例子,若有超连接,则补充了详细说明,慢慢填坑!原创 2024-08-28 11:21:44 · 1049 阅读 · 0 评论 -
结构型设计模式-适配器(adapter)模式-python实现
适配器模式是一种非常有用的设计模式,它可以让不兼容的接口协同工作,提高了代码的复用性和系统的灵活性。当你面临接口不兼容的问题,或者你想在不修改现有代码的前提下引入新功能时,适配器模式就是一个很好的选择。原创 2024-08-28 10:50:10 · 548 阅读 · 0 评论 -
创建型设计模式-原型模式(prototype)- python实现
原型模式在处理复杂对象的复制时非常有用,它简化了对象的创建过程,并允许动态地改变对象的状态。不过,使用原型模式时,需要注意深复制和浅复制的区别,以及可能出现的循环引用问题。原创 2024-08-28 10:49:33 · 909 阅读 · 0 评论 -
行为型设计模式-策略(strategy)模式
策略模式通过定义一系列算法,并将每个算法封装到独立的策略类中,使得算法可以互换,从而让算法的变化独立于客户端代码。这种模式在需要根据不同情况动态选择算法的场景中非常有用。原创 2024-08-27 14:28:29 · 440 阅读 · 0 评论 -
结构型设计模式-桥接(bridge)模式-python实现
桥接模式适用于那些需要将抽象和实现分离,以便它们可以独立变化的情况。当你希望你的系统可以跨多个平台工作,或者你希望在不修改抽象的情况下添加新的实现时,桥接模式是一个很好的选择。原创 2024-08-27 14:26:36 · 325 阅读 · 0 评论 -
创建型设计模式-构建器(builder)模式-python实现
构建器模式适用于创建复杂对象,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。当你需要创建的对象有很多配置选项,且每个选项都有多种可能时,构建器模式是一个很好的选择。原创 2024-08-27 14:25:50 · 576 阅读 · 0 评论 -
行为型设计模式-模板方法(template method)模式
模板方法模式通过在一个方法中定义算法的骨架,将算法的某些步骤的实现推迟到子类中,从而允许子类在不改变算法结构的情况下,重新定义算法中的某些步骤。这种模式特别适用于那些具有多个步骤,其中一些步骤经常变化而另一些保持不变的情况。原创 2024-08-26 11:45:50 · 740 阅读 · 0 评论 -
行为型设计模式-访问者(visitor)模式
访问者模式通过将操作逻辑封装在访问者对象中,允许对对象结构中的元素执行操作而无需修改这些元素类。这使得添加新的操作变得简单,同时也保持了元素类的稳定性。适用于那些需要对对象结构。原创 2024-08-26 11:44:55 · 748 阅读 · 0 评论 -
结构型设计模式-组合(composite)模式
组合模式适用于需要表示树形结构的情况,它允许客户端以统一的方式处理单个对象和组合对象。这种模式特别适合于组织结构、文件系统、图形编辑器等应用场景。通过组合模式,我们可以提高代码的复用性和可维护性。原创 2024-08-23 09:55:38 · 402 阅读 · 0 评论 -
软件架构风格-数据流风格
数据流风格的软件架构通过组件间的数据流动来实现功能,使得数据处理过程更加清晰和模块化。它适用于需要大量数据处理或实时数据流响应的应用场景。通过设计良好的数据流架构,可以有效地提高系统的性能和可扩展性。原创 2024-08-23 09:55:06 · 353 阅读 · 0 评论 -
单例模式(singleton)- python实现
单例模式适用于当你需要一个类来控制资源的访问,确保整个应用程序中只有一个实例被创建和使用。不过,过度使用单例模式可能会导致代码的不灵活和难以测试。因此,应当在确实需要时才使用这种模式。原创 2024-08-22 10:39:29 · 631 阅读 · 0 评论 -
面向对象的设计原则--接口分离原则
接口分离原则指出,多个特定客户端接口要好于一个宽泛用途的接口。即,一个类对外的接口应该是最小的接口集,任何客户都不应该被强迫依赖于它们不使用的方法。接口应该根据客户的需求来设计,而不是根据它所在的类层次结构来设计。原创 2024-08-22 10:38:26 · 349 阅读 · 0 评论 -
面向对象的设计原则--里氏替换原则
里氏替换原则指出,子类型必须能够替换它们的基类型。这意味着,如果有一个程序或模块是用基类类型编写的,那么你可以用任何子类的实例来代替基类的实例,而不应该影响程序的正确性。换句话说,子类应该是可以透明地替换基类的。原创 2024-08-21 09:30:41 · 445 阅读 · 0 评论 -
面向对象的设计原则--开放封闭原则
开放封闭原则指出,软件实体(如类、模块、函数等)应该是对扩展开放的,但对修改封闭的。这意味着一个实体允许其功能通过添加新的代码来扩展,而不是通过修改已有代码来适应新的场景。原创 2024-08-21 09:29:56 · 313 阅读 · 0 评论 -
面向对象的设计原则--单一责任原则
单一责任原则规定,一个类应该只有一个引起它变化的原因。这意味着一个类应该仅负责一项职责,或者可以表述为:一个类应该只有一个变化的原因。原创 2024-08-20 15:07:06 · 317 阅读 · 0 评论 -
面向对象的设计原则--依赖倒置原则
这意味着在设计中,我们应该尽量让高层模块(如业务逻辑模块)和低层模块(如数据库访问、文件操作等)都依赖于抽象(如接口或抽象类),而不是让高层模块直接依赖于低层模块的具体实现。这是面向对象设计中非常重要的一个原则,它是SOLID原则中的一个,SOLID代表了五个设计原则的首字母缩写,用于指导开发者编写可维护和可扩展的代码。通过这种方式,如果未来需要更换邮件发送服务提供商,只需提供一个新的实现类,无需修改高层模块的代码,从而实现了高层模块和低层模块的解耦。原创 2024-08-20 15:01:03 · 824 阅读 · 0 评论 -
抽象工厂模式(Abstract factory pattern)- python实现
抽象工厂模式是一种设计模式,它提供了一个抽象的接口,让你可以创建一系列相关或相互依赖的对象,而不需要知道这些对象的具体类。在这个模式中,你只需要知道你想要的对象家族(比如现代或古典家具),而具体的对象创建工作则由具体的工厂来完成。原创 2024-08-12 17:55:20 · 418 阅读 · 0 评论