.NET 设计模式—享元模式(Flyweight Pattern)
简介 享元模式(Flyweight Pattern)是一种结构型设计模式,它旨在减少系统中相似对象的内存占用或计算开销,通过共享相同的对象来达到节省资源的目的。 享元模式提供了一种高效地共享对象的方式,从而减少了内存占用和提高了性能,但需要注意的是,使用享元模式会增加系统的复杂性,因为它需要维护共享对象池。 角色 抽象享元角色(IFlyweight):享元对象抽象基类或接口,同时定义出对象的外部状态和内部状...
设计模式——2_9 模版方法(Template Method)
文章目录 定义图纸一个例子:从文件中获取信息分几步?ReaderReader 读取一个文件分几步?Reader 碎碎念模板方法和好莱坞原则好莱坞原则依赖腐败 模板方法和钩子模板方法和框架模板方法和策略Handler 模板方法和生成器写在后面 定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 图纸 一个例子:从文件中获取信息分几...
.NET 设计模式—命令模式(Command Pattern)
简介 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 角色 发起者(Invoker):这是请求的发起者,它知道如何调用命令对象以执行请求。发起者通常不直接执行请求,而是将请求传递给命令对象。 命令(Command):这是命令模式的核心角色。命...
.NET 设计模式—观察者模式(Observer Pattern)
简介 在.NET中,观察者模式是一种设计模式,它允许对象之间进行一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式在事件驱动的设计中非常常见。 在.NET中实现观察者模式,通常涉及到定义一个抽象的观察者接口和一个可被观察的对象。这个可被观察的对象维护一个观察者的列表,并在状态改变时通知所有观察者。 角色 抽象主题角色(Subject):抽象主题把所有观察者对象的...
.NET 设计模式—模板方法模式(Template Method Pattern)
简介 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类。通过模板方法模式,我们可以在不改变算法结构的情况下,允许子类重新定义某些步骤,从而实现代码复用和扩展。 在软件开发中,我们经常会遇到需要定义一组相似操作的场景。这些操作可能在整体上有着相同的结构,但在细节上有所...
.NET 设计模式—迭代器模式(Iterator Pattern)
简介 迭代器模式(Iterator Pattern)是一种行为型设计模式,它允许我们通过提供一种方法来访问聚合对象中的元素,而不需要暴露聚合对象的内部实现。在迭代器模式中,我们通过创建一个迭代器对象来遍历聚合对象中的元素,而不直接访问聚合对象本身。这使得我们可以更加灵活地处理聚合对象,而不需要改变聚合对象的内部结构。 角色 迭代器(Iterator):定义遍历聚合对象的接口,包含访问下一个元素和判断是否已经...
.NET 设计模式—职责链模式(Chain of Responsibility Pattern)
简介 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递, 直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新 组织链和分配责任。 角色 抽象处理器(Handler):定义处理请求的接口,提供一个抽象方法用于处理请求,并定义一个指向后继处理器的...
.NET 设计模式—策略模式(Strategy Pattern)
简介 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。这种模式定义了一系列算法,并将每个算法封装到一个对象中,使得它们可以互相替换。策略模式使得算法可以独立于使用它的客户端而变化,提供了灵活性、可扩展性和复用性。 角色 抽象策略角色(Strategy):定义了一个公共接口,各种不同的算法以不同的方式实现这个接口。具体策略角色(ConcreteStrategy):实现了Strategy定义的接口,...
.NET 设计模式—装饰器模式(Decorator Pattern)
简介 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不改变对象接口的前提下,动态地将新行为附加到对象上。这种模式是通过创建一个包装(或装饰)对象,将要被装饰的对象包裹起来,从而实现对原有对象功能的增强和扩展。 角色 Component(组件): 定义了一个抽象接口,可以是抽象类或接口,规定了被装饰对象和装饰器的共同接口。ConcreteComponent(具体组件): 实现...
设计模式——2_7 状态(State)
文章目录 定义图纸一个例子:如何模拟一个转笔刀自动转笔刀PencilPencilSharpener 投诉和改善钝刀BladePencilSharpener 没有铅笔PencilSharpener if if ifStatePencilSharpener 碎碎念状态和if状态和可复用性状态类的复用状态对象 定义 允许一个对象在其内部状态改变时改变它的行为,让这个对象看起来似乎修改了她的类 那你会说,这跟if...