目的
给予单例模式解决解耦的问题,个功能对象接都建立单例对象,单是有些时候,可能也会通过new建立。那么这时候如何保证单例呢?
我最初的想法是,重载new运算符,来控制创建对象的数量,单是new是不可重载的,那么就只能通过构造函数解决了,这种情况有一个缺点,就是有可能会构建多个对象。但是真正使用的只有一个。
所以保证这种设计的条件是,对象最多只new一次。其他的情况都是使用getMy();
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 单例对象保证
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.main();
Console.ReadKey();
}
void main() {
A a = new A();
a.getMy();
}
}
class A {
static A ma = null;
public A() {
if (ma == null) {
ma = this;
}
}
public A getMy() {
if (ma == null) {
ma = new A();
}
return ma;
}
}
}
运行结果