常用设计模式 C#
2019-03-24 本文已影响0人
CodeVin
我会按照自己的理解用自己的语言表述。
单例模式
随时随地可访问一个共享对象。一般用作Manager,因为你不需要创建两个具有相同功能的管理员。
//多线程安全的单例类
public class Singleton
{
//静态变量只会被初始化一次
private static Singleton instance = new Singleton();
//覆盖默认构造函数,private防止在类外部构造实例
private Singleton()
{
}
//外部获取实例的唯一途径
public static Singleton Instance
{
get
{
return instance;
}
}
}
关于静态构造函数:
静态构造函数用于初始化静态成员,或用于仅需执行一次的操作。
- 在创建第一个实例,或引用任何静态成员之前,静态构造函数将被.NET自动调用,且最多运行一次
- 如果没写,而类中又包含静态成员,编译器会自动生成默认静态构造函数
- 不能手动调用。因为是系统调用,所以public等访问修饰符就没有写的意义了
观察者模式
观察者定义了对象间一种一对多的组合关系,以便一个对象状态发生变化时,所有依赖它的对象都得到通知并自动刷新。
被观察者和观察者之间的互动关系不应该用直接调用函数的方式,否则就将是两者紧密耦合起来,从根本上违反面向对象的设计原则。
在C#中,我们可以通过使用接口来增加一层抽象,将观察者和被观察者模块隔离。
工厂模式
用工厂方法代替new操作实例化对象。
简单工厂创建并返回实例,对简单工厂进一步抽象就是抽象工厂。
区别在于,若添加一个新产品,前者修改工厂,后者创建新工厂,符合开闭原则。
外观模式
外观模式提供一个统一接口,来访问子系统中的一群接口。
享元模式
使用共享对象有效支持大量细粒度的对象,减少对象的创建,降低内存占用。如各种缓存池技术的实现。
组件模式
将独立的功能做封装,便于增删和管理。
迭代器模式
提供一种方法顺序访问集合中的各个元素,而又不用了解底层实现。