![](https://img-blog.csdnimg.cn/aef6dc1a005044158ae26a6344e709b0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 72
软件设计模式(Software Design Pattern),又称设计模式,是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。
吉量*
不论生活如何复杂,总要保持自己的那一份优雅。
展开
-
.NET 设计模式—解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。使用了解释器模式,可以很容易地改变和扩展文法,因为该模式使用类来表示文法规则,可以使用继承来改变或扩展该文法。也比较容易实现文法,因为定义抽象语法树中各个节点的类的实现大体类似,这些类容易直接编写。原创 2024-04-17 07:00:00 · 828 阅读 · 0 评论 -
.NET 设计模式—命令模式(Command Pattern)
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。原创 2024-04-16 07:00:00 · 434 阅读 · 0 评论 -
.NET 设计模式—中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。简单来说,就是用一个中介对象来封装一系列的对象交互,使各个对象不需要显式地互相引用,从而达到了减少耦合的目的,同时也能让它们之间交互独立地变化。原创 2024-04-16 07:00:00 · 173 阅读 · 0 评论 -
.NET 设计模式—访问者模式(Visitor Pattern)
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。原创 2024-04-15 07:00:00 · 1012 阅读 · 0 评论 -
.NET 设计模式—备忘录模式(Memento Pattern)
备忘录模式,又称之为快照模式(Snapshop Pattern),是一种行为型设计模式,,它允许在不破坏对象封装性的前提下,捕获并保存一个对象的内部状态,以便在需要时恢复该对象到原先的状态。备忘录模式可以为我们提供一种“后悔药”的机制,它通过存储系统中各个历史状态的快照,使得我们可以在任一时刻将系统回滚到历史状态。原创 2024-04-15 07:00:00 · 676 阅读 · 0 评论 -
.NET 设计模式—迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)是一种行为型设计模式,它允许我们通过提供一种方法来访问聚合对象中的元素,而不需要暴露聚合对象的内部实现。在迭代器模式中,我们通过创建一个迭代器对象来遍历聚合对象中的元素,而不直接访问聚合对象本身。这使得我们可以更加灵活地处理聚合对象,而不需要改变聚合对象的内部结构。原创 2024-04-14 20:42:48 · 479 阅读 · 0 评论 -
.NET 设计模式—模板方法模式(Template Method Pattern)
模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类。通过模板方法模式,我们可以在不改变算法结构的情况下,允许子类重新定义某些步骤,从而实现代码复用和扩展。在软件开发中,我们经常会遇到需要定义一组相似操作的场景。这些操作可能在整体上有着相同的结构,但在细节上有所差异。如果每次都重复编写这些操作的通用结构,会导致代码的冗余性,同时也增加了后期维护的难度。原创 2024-04-14 20:29:36 · 588 阅读 · 0 评论 -
.NET 设计模式—观察者模式(Observer Pattern)
在.NET中,观察者模式是一种设计模式,它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。在.NET中实现观察者模式,通常涉及到定义一个抽象的观察者接口和一个可被观察的对象。这个可被观察的对象维护一个观察者的列表,并在状态改变时通知所有观察者。原创 2024-04-14 20:21:34 · 614 阅读 · 0 评论 -
.NET 设计模式—职责链模式(Chain of Responsibility Pattern)
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递, 直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新 组织链和分配责任。原创 2024-04-13 07:00:00 · 794 阅读 · 0 评论 -
.NET 设计模式—状态模式(State Pattern)
状态模式(State Pattern),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态装换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化。状态模式在工作流或游戏等各种系统中大量使用。原创 2024-04-13 07:00:00 · 253 阅读 · 0 评论 -
.NET 设计模式—策略模式(Strategy Pattern)
策略模式是一种行为设计模式,它允许在运行时选择算法的行为。这种模式定义了一系列算法,并将每个算法封装到一个对象中,使得它们可以互相替换。策略模式使得算法可以独立于使用它的客户端而变化,提供了灵活性、可扩展性和复用性。原创 2024-04-12 15:10:07 · 385 阅读 · 0 评论 -
.NET 设计模式—享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在减少系统中相似对象的内存占用或计算开销,通过共享相同的对象来达到节省资源的目的。享元模式提供了一种高效地共享对象的方式,从而减少了内存占用和提高了性能,但需要注意的是,使用享元模式会增加系统的复杂性,因为它需要维护共享对象池。原创 2024-04-12 14:51:39 · 596 阅读 · 0 评论 -
.NET 设计模式—外观模式(Facade Pattern)
外观(Facade)模式又叫作门面模式,是一种为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部与其中子系统的通信必须通过一个统一的外观对象进行,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,使得这一子系统更加容易使用,提高了程序的可维护性。外观模式是一种对象结构型模式。原创 2024-04-11 06:00:00 · 359 阅读 · 0 评论 -
.NET 设计模式—组合模式(Composite Pattern)
组合模式是一种结构型设计模式,它允许将对象组合成树形结构以表示“整体/部分”层次结构。该模式可以让客户端通过统一的方式处理单个对象和对象组合,从而使得代码更加简洁、灵活。原创 2024-04-11 06:00:00 · 305 阅读 · 0 评论 -
.NET 设计模式—桥接模式(Design pattern)
桥接模式(Bridge Pattern) 也称为桥梁模式、接口模式或者柄体模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化,属于结构型模式。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背了类的单一职责原则,其复用性较差,桥接模式是比多重继承更好的替代方案。桥接模式的核心在于解耦抽象和实现。原创 2024-04-10 10:55:46 · 460 阅读 · 0 评论 -
.NET 设计模式—装饰器模式(Decorator Pattern)
装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来,从而实现对原有对象功能的增强和扩展。原创 2024-04-08 23:32:52 · 1306 阅读 · 0 评论 -
.NET 设计模式—代理模式(Proxy Pattern)
代理模式:为一个对象提供- 一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种静态代理、动态代理(JDK代理、接口代理)和Cglib代理(可以在内存动态的创建对象,而不需要实现接口,他是属于动态代理的范畴)。原创 2024-04-07 06:00:00 · 761 阅读 · 4 评论 -
.NET 设计模式—适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern):就是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器有类适配器和对象适配器两种类型,二者的意图相同,只是实现的方法和适用的情况不同。原创 2024-04-06 21:37:48 · 499 阅读 · 0 评论 -
.NET 设计模式—建造者模式(Builder Pattern)
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。建造者模式的核心思想就是将一个复杂对象的构建与其表示分离,让用户只需要关注需要构造的对象的属性即可。这样用户不需要知道对象的内部实现细节,只需要通过Builder提供的接口方法来设置对象属性,就可以得到一个完整的对象。抽象建造者类(Builder):这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的部件对象的创建。原创 2024-04-06 06:00:00 · 463 阅读 · 0 评论 -
.NET 设计模式—工厂方法模式(Factory Method Pattern)
工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。这种模式使得对象的创建延迟到子类,从而实现了对扩展开放、对修改关闭的原则。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。原创 2024-04-05 06:00:00 · 720 阅读 · 0 评论 -
.NET 设计模式—简单工厂(Simple Factory Pattern)
简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过一个工厂类来创建对象,根据不同的参数或条件返回相应的对象实例。这种模式隐藏了对象的创建细节,客户端只需通过工厂类获取对象而不需要直接实例化对象。原创 2024-04-04 22:05:09 · 726 阅读 · 0 评论 -
.NET 设计模式—原型模式(Prototype Pattern)
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,当每次都新创建一个对象的代价比较大时,可以采用这种模式,它用于创建当前对象的克隆。Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。而Prototype则是通过原型(一个特殊的工厂类)来克隆“易变对象”。(其实原型就是一个特殊的单例)。原创 2024-04-04 20:30:22 · 655 阅读 · 0 评论 -
.NET 设计模式—单例模式(SingletonPattern)
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就非常适合。原创 2024-04-03 23:59:13 · 770 阅读 · 1 评论 -
设计模式—迪米特原则(LOD)
迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowledge Principle),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。英文简写为: LOD。原创 2023-11-28 06:00:00 · 573 阅读 · 0 评论 -
设计模式—接口隔离原则(ISP)
接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。原创 2023-11-27 06:00:00 · 1173 阅读 · 0 评论 -
设计模式—依赖倒置原则(DIP)
依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。原创 2023-11-26 19:30:28 · 862 阅读 · 0 评论 -
设计模式—里氏替换原则
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。原创 2023-11-25 06:00:00 · 965 阅读 · 0 评论 -
设计模式—开闭原则
这一想法认为一旦完成,一个类的实现只应该因错误而修改,新的或者改变的特性应该通过新建不同的类实现。开闭原则,在面向对象编程领域中,规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为;系统中的模块、类、方法对他们的使用者应该是关闭的,使用者使用这些功能时,不会因为提供方新增了功能而导致使用者也进行相关的修改。系统中的模块、类、方法对他们的提供者应该是开放的,提供者可以对系统进行扩展新的功能。原创 2023-11-24 14:23:19 · 923 阅读 · 0 评论 -
设计模式—单一职责原则
每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。遵循单一职责原则,分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。有一个类T负责两个不同的职责:职责P1和职责P2。当因为职责P1的需求发生改变而需要修改类T的时候,有可能会导致原本运行正常的职责P2功能发生故障。举例:针对上面案例中的代码,我们进行优化,我们把图片下载、保存到缓存、图片显示这几个职责定义成单独类,而不是一个类全搞定。变更是必然的,如果单一职责原则遵守得好,就可以达到职责/功能的解耦。原创 2023-11-22 23:36:02 · 469 阅读 · 0 评论 -
软件设计模式
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结;使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。原创 2023-11-21 23:45:14 · 323 阅读 · 0 评论