当前位置: 首页> 汽车> 新车 > wix建站教程_设计师资源网站_新闻头条最新消息国家大事_鄞州seo服务

wix建站教程_设计师资源网站_新闻头条最新消息国家大事_鄞州seo服务

时间:2025/7/12 5:40:47来源:https://blog.csdn.net/yuanpan/article/details/145928296 浏览次数: 0次
wix建站教程_设计师资源网站_新闻头条最新消息国家大事_鄞州seo服务

程序设计中的主要设计模式通常分为三大类,共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.迭代器模式(Iterator Pattern)简介

迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。通过迭代器模式,可以在不暴露集合内部结构的情况下,遍历集合中的元素。

核心思想:
  • 迭代器:负责遍历集合中的元素,并提供访问元素的接口。
  • 聚合对象:包含一组元素的集合,通常提供一个方法来获取迭代器。
优点:
  1. 简化集合接口:集合类不需要暴露其内部结构,只需提供一个迭代器即可。
  2. 支持多种遍历方式:可以为同一个集合提供不同的迭代器,支持不同的遍历方式。
  3. 解耦:迭代器模式将遍历逻辑与集合类分离,使得集合类和遍历逻辑可以独立变化。
缺点:
  1. 增加复杂性:对于简单的集合,引入迭代器可能会增加代码的复杂性。
  2. 性能开销:迭代器模式可能会引入额外的性能开销,尤其是在遍历大型集合时。

5.C# 迭代器模式演示代码

下面是一个简单的C#示例,展示了如何使用迭代器模式来遍历一个集合中的元素。

 

csharp

using System;
using System.Collections;
using System.Collections.Generic;// 迭代器接口
interface IIterator
{bool HasNext();object Next();
}// 聚合对象接口
interface IAggregate
{IIterator CreateIterator();
}// 具体聚合对象
class ConcreteAggregate : IAggregate
{private List<object> items = new List<object>();public void Add(object item){items.Add(item);}public IIterator CreateIterator(){return new ConcreteIterator(this);}public int Count{get { return items.Count; }}public object this[int index]{get { return items[index]; }set { items[index] = value; }}
}// 具体迭代器
class ConcreteIterator : IIterator
{private ConcreteAggregate aggregate;private int current = 0;public ConcreteIterator(ConcreteAggregate aggregate){this.aggregate = aggregate;}public bool HasNext(){return current < aggregate.Count;}public object Next(){if (HasNext()){return aggregate[current++];}else{throw new InvalidOperationException("No more elements");}}
}// 客户端代码
class Program
{static void Main(string[] args){// 创建聚合对象ConcreteAggregate aggregate = new ConcreteAggregate();aggregate.Add("Item 1");aggregate.Add("Item 2");aggregate.Add("Item 3");// 创建迭代器IIterator iterator = aggregate.CreateIterator();// 使用迭代器遍历集合while (iterator.HasNext()){Console.WriteLine(iterator.Next());}}
}

6.代码说明

  1. IIterator 接口:定义了迭代器的接口,包含 HasNext 和 Next 方法。HasNext 方法用于检查是否还有下一个元素,Next 方法用于获取下一个元素。

  2. IAggregate 接口:定义了聚合对象的接口,包含一个 CreateIterator 方法,用于创建迭代器。

  3. ConcreteAggregate 类:具体的聚合对象类,实现了 IAggregate 接口。它包含一个 List<object> 来存储元素,并提供了 CreateIterator 方法来创建具体的迭代器。

  4. ConcreteIterator 类:具体的迭代器类,实现了 IIterator 接口。它包含对聚合对象的引用,并在 HasNext 和 Next 方法中实现遍历逻辑。

  5. 客户端代码:在 Main 方法中,创建了聚合对象并添加了一些元素,然后通过迭代器遍历集合中的元素。

7.运行结果

运行上述代码后,输出如下:

Item 1
Item 2
Item 3

8.总结

在这个示例中,迭代器模式通过引入 ConcreteIterator 来遍历 ConcreteAggregate 中的元素。聚合对象不需要暴露其内部结构,只需提供一个迭代器即可。这种方式使得集合类和遍历逻辑可以独立变化,提高了代码的灵活性和可维护性。

关键字:wix建站教程_设计师资源网站_新闻头条最新消息国家大事_鄞州seo服务

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: