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)
答案 0 :(得分:1)
您提出的代码没有意义。 GetInstance()
应该返回一个实例,对吗?但你忽略了它的回报价值。
HttpHelloWorldService.GetInstance();
在下一行中,您将通过构造函数创建此类的另一个实例。
HttpHelloWorldService hhtt = new HttpHelloWorldService();
hhtt.Execute(Request,Response);
你确定你知道单身是什么吗?因为这看起来并不像一个。
答案 1 :(得分:0)
简短回答:不。如果这是一个真正的单例实现,你根本无法成功调用new
。如果你可以调用它,你可以替换代码,但那绝对不是单例。
单身的基本思想是你只能创建一个单个对象。像getInstance()
这样的方法用于返回此对象(如果之前已创建)或创建此对象此方法。您应该不使用new
自行创建对象。单例类的构造函数应该是私有的。您可以创建多个对象的其他方法,这将违背模式构思。仅使用getInstance()
的返回值来访问单例对象。
对单身模式的最佳实践进行了详细描述here