0
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是一个静态类,有以下两种方法:

-public static HttpHelloWorldService GetInstance()

-public void Execute(HttpRequest request, HttpResponse response)

4

2 回答 2

1

您提出的代码没有意义。GetInstance()应该返回一个实例,对吧?然而你忽略了它的返回值。

HttpHelloWorldService.GetInstance();

在下一行,您通过构造函数创建该类的另一个实例。

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

你确定你知道单例是什么?因为这看起来根本不像一个。

于 2013-10-15T07:50:36.597 回答
0

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

单例的基本思想是你只能创建一个类的单个对象。类似getInstance()ist 的方法用于返回此对象(如果它是之前创建的)或创建它洞察此方法。您应该能够通过使用自己创建对象new。单例类的构造函数应该是私有的。否则,您可以创建多个对象,这将违背模式的想法。仅使用 的返回值getInstance()来访问单例对象。

这里给出了单例模式最佳实践的一个很好的描述

于 2013-10-15T07:56:42.817 回答