常用设计模式 C#

我会按照自己的理解用自己的语言表述。

单例模式

随时随地可访问一个共享对象。一般用作Manager,因为你不需要创建两个具有相同功能的管理员。

//多线程安全的单例类
public class Singleton
{
    //静态变量只会被初始化一次
    private static Singleton instance = new Singleton();

    //覆盖默认构造函数,private防止在类外部构造实例
    private Singleton()
    {
    }

    //外部获取实例的唯一途径
    public static Singleton Instance
    {
        get
        {
            return instance;
        }
    }
}

关于静态构造函数:
静态构造函数用于初始化静态成员,或用于仅需执行一次的操作。

  • 在创建第一个实例,或引用任何静态成员之前,静态构造函数将被.NET自动调用,且最多运行一次
  • 如果没写,而类中又包含静态成员,编译器会自动生成默认静态构造函数
  • 不能手动调用。因为是系统调用,所以public等访问修饰符就没有写的意义了

观察者模式

观察者定义了对象间一种一对多的组合关系,以便一个对象状态发生变化时,所有依赖它的对象都得到通知并自动刷新。
被观察者和观察者之间的互动关系不应该用直接调用函数的方式,否则就将是两者紧密耦合起来,从根本上违反面向对象的设计原则。
在C#中,我们可以通过使用接口来增加一层抽象,将观察者和被观察者模块隔离。

工厂模式

用工厂方法代替new操作实例化对象。
简单工厂创建并返回实例,对简单工厂进一步抽象就是抽象工厂。
区别在于,若添加一个新产品,前者修改工厂,后者创建新工厂,符合开闭原则。

外观模式

外观模式提供一个统一接口,来访问子系统中的一群接口。

享元模式

使用共享对象有效支持大量细粒度的对象,减少对象的创建,降低内存占用。如各种缓存池技术的实现。

组件模式

将独立的功能做封装,便于增删和管理。

迭代器模式

提供一种方法顺序访问集合中的各个元素,而又不用了解底层实现。

你可能感兴趣的:(常用设计模式 C#)