三合一企业网站模板,软件工程师工作内容,平台类网站制作公司,龙口网站设计程序设计中的主要设计模式通常分为三大类#xff0c;共23种#xff1a;
1. 创建型模式#xff08;Creational Patterns#xff09; 单例模式#xff08;Singleton#xff09;#xff1a;确保一个类只有一个实例#xff0c;并提供全局访问点。 工厂方法模式#xff0…程序设计中的主要设计模式通常分为三大类共23种
1. 创建型模式Creational Patterns 单例模式Singleton确保一个类只有一个实例并提供全局访问点。 工厂方法模式Factory Method定义创建对象的接口由子类决定实例化哪个类。 抽象工厂模式Abstract Factory提供一个创建一系列相关或依赖对象的接口而无需指定具体类。 建造者模式Builder将一个复杂对象的构建与其表示分离使同样的构建过程可以创建不同的表示。 原型模式Prototype通过复制现有对象来创建新对象。
2. 结构型模式Structural Patterns 适配器模式Adapter将一个类的接口转换成客户希望的另一个接口。 桥接模式Bridge将抽象部分与实现部分分离使它们可以独立变化。 组合模式Composite将对象组合成树形结构以表示“部分-整体”的层次结构。 装饰器模式Decorator动态地给对象添加职责相比生成子类更为灵活。 外观模式Facade为子系统中的一组接口提供一个统一的接口。 享元模式Flyweight通过共享技术有效地支持大量细粒度对象。 代理模式Proxy为其他对象提供一种代理以控制对这个对象的访问。
3. 行为型模式Behavioral Patterns 责任链模式Chain of Responsibility使多个对象都有机会处理请求从而避免请求的发送者与接收者耦合。 命令模式Command将请求封装为对象使你可以用不同的请求对客户进行参数化。 解释器模式Interpreter给定一个语言定义其文法的一种表示并定义一个解释器。 迭代器模式Iterator提供一种方法顺序访问一个聚合对象中的各个元素而又不暴露其内部表示。 中介者模式Mediator定义一个中介对象来封装一系列对象之间的交互。 备忘录模式Memento在不破坏封装性的前提下捕获一个对象的内部状态并在该对象之外保存这个状态。 观察者模式Observer定义对象间的一对多依赖关系当一个对象改变状态时所有依赖者都会收到通知并自动更新。 状态模式State允许对象在其内部状态改变时改变其行为。 策略模式Strategy定义一系列算法将它们封装起来并使它们可以互相替换。 模板方法模式Template Method定义一个操作中的算法骨架将一些步骤延迟到子类中。 访问者模式Visitor表示一个作用于某对象结构中的各元素的操作使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
4.备忘录模式Memento解释
备忘录模式Memento Pattern是一种行为设计模式它允许在不破坏封装性的情况下捕获并外部化一个对象的内部状态以便以后可以将该对象恢复到之前的状态。备忘录模式通常用于实现撤销操作或保存对象的历史状态。
备忘录模式的核心思想是将对象的状态保存在一个独立的备忘录对象中而不是直接暴露对象的内部状态。这样对象可以在需要时恢复到之前的状态而不需要暴露其内部实现细节。
备忘录模式通常涉及以下三个角色
Originator发起人负责创建备忘录对象并使用备忘录对象恢复其内部状态。Memento备忘录存储发起人对象的内部状态。Caretaker管理者负责保存备忘录对象并在需要时将备忘录对象返回给发起人以恢复状态。
5.C# 备忘录模式演示代码 csharp
using System;
using System.Collections.Generic;// Memento类存储Originator的内部状态
class Memento
{public string State { get; private set; }public Memento(string state){State state;}
}// Originator类负责创建备忘录对象并使用备忘录对象恢复其内部状态
class Originator
{private string _state;public string State{get { return _state; }set{_state value;Console.WriteLine(State set to: _state);}}// 创建备忘录对象public Memento CreateMemento(){return new Memento(_state);}// 使用备忘录对象恢复状态public void SetMemento(Memento memento){State memento.State;}
}// Caretaker类负责保存备忘录对象
class Caretaker
{private ListMemento _mementos new ListMemento();public void AddMemento(Memento memento){_mementos.Add(memento);}public Memento GetMemento(int index){return _mementos[index];}
}// 客户端代码
class Program
{static void Main(string[] args){Originator originator new Originator();Caretaker caretaker new Caretaker();// 设置初始状态并保存originator.State State #1;caretaker.AddMemento(originator.CreateMemento());// 更改状态并保存originator.State State #2;caretaker.AddMemento(originator.CreateMemento());// 更改状态并保存originator.State State #3;caretaker.AddMemento(originator.CreateMemento());// 恢复到第一个保存的状态originator.SetMemento(caretaker.GetMemento(0));Console.WriteLine(Restored to: originator.State);// 恢复到第二个保存的状态originator.SetMemento(caretaker.GetMemento(1));Console.WriteLine(Restored to: originator.State);}
}
6.代码说明 Memento类这是一个简单的类用于存储Originator对象的内部状态。它只有一个属性State表示Originator的状态。 Originator类这是需要保存和恢复状态的对象。它有一个State属性表示当前状态。CreateMemento方法用于创建一个Memento对象保存当前状态。SetMemento方法用于从Memento对象中恢复状态。 Caretaker类这是负责保存Memento对象的类。它有一个ListMemento来存储多个状态。AddMemento方法用于添加Memento对象GetMemento方法用于获取指定索引的Memento对象。 客户端代码在Main方法中我们创建了一个Originator对象和一个Caretaker对象。我们通过设置Originator的状态并保存到Caretaker中然后通过Caretaker恢复到之前保存的状态。
7.运行结果
State set to: State #1
State set to: State #2
State set to: State #3
Restored to: State #1
Restored to: State #2
8.总结
备忘录模式通过将对象的状态保存在独立的备忘录对象中实现了对象状态的保存和恢复而不需要暴露对象的内部实现细节。这种模式非常适合需要实现撤销操作或保存对象历史状态的场景。