Singleton 这可以替代单例模式吗?如果不能,为什么?

Singleton 这可以替代单例模式吗?如果不能,为什么?,singleton,Singleton,注: -HttpHelloWorldService是一个静态类,包含以下两种方法: -公共静态HttpHelloWorldService GetInstance() -public void Execute(HttpRequest请求,HttpResponse响应)您建议的代码没有意义GetInstance()应该返回一个实例,对吗?但您忽略了它的返回值 public partial class HelloWorldService : System.Web.UI.Page {

注: -
HttpHelloWorldService
是一个静态类,包含以下两种方法:

-
公共静态HttpHelloWorldService GetInstance()


-
public void Execute(HttpRequest请求,HttpResponse响应)
您建议的代码没有意义
GetInstance()
应该返回一个实例,对吗?但您忽略了它的返回值

public partial class HelloWorldService : System.Web.UI.Page

    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //HttpHelloWorldService.GetInstance().Execute(Request, Response);

            //--can the above code be written in the following 3 lines??.......

            HttpHelloWorldService.GetInstance();
            HttpHelloWorldService hhtt = new HttpHelloWorldService();
            hhtt.Execute(Request,Response);
        }
    }
在下一行中,您通过构造函数创建这个类的另一个实例

HttpHelloWorldService.GetInstance();

你确定你知道什么是单身吗?因为这看起来一点也不像。

简短回答:不。如果这是一个真正的单例实现,您根本无法成功地调用
new
。如果您可以调用它,您可以替换代码,但它肯定不是单例

singleton的基本思想是,您只能创建类的一个单个对象。类似于
getInstance()
ist的方法用于返回此对象(如果该对象是在该方法之前创建的),或者使用此方法创建它。您应该不能使用
new
自行创建对象。单例类的构造函数应该是私有的。另外,您可以创建多个对象,这将与模式的想法背道而驰。仅使用
getInstance()
的返回值访问singleton对象

对单例模式中的最佳实践进行了很好的描述

HttpHelloWorldService hhtt = new HttpHelloWorldService();
hhtt.Execute(Request,Response);