保证一个类只有一个实例,并提供一个访问他的全局访问点。
通常移位可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其它实例可以被创建。单例模式可以保证唯一的实例,可以对唯一实例的受控访问。单例类可以有状态,可以被继承。
多线程时的单例
可以对进程进行加锁处理,lock 是确保当一个线程位于代码的临界区时,另一个线程不进入临界区,如果其它进程试图进入锁定的代码,则它一直等待(即被阻止),直到该对象审美被释放。
静态初始化
C#与公式语言运行库也提供了一种静态初始化方法,这种方法不需要开发人员显式的编写线程安全代码,即可解决多线程环境下它是不安全的问题。
这样写解决了两个问题:全局访问和实例化控制。Intance 变量标记为Readonly ,这意味着只能在静态初始化期间或在类构造函数中分配变量。
对象的继承关系在编译时就定义好了,所以无法在运行时改变从父类继承的实现,子类的实现与它的父类有着密切的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化,当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其它更合适的类替换,这种依赖关系限制了灵活性并最终限制了复用性。
有了新锤子,所有的东西看上去都成了钉子。
复制粘贴是最容易的编程,也是最没有价值的编程。
时间: 2024-10-01 02:56:40