这可以替代单身模式吗?如果不是为什么?

时间:2013-10-15 07:39:42

标签: singleton

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)

2 个答案:

答案 0 :(得分:1)

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

HttpHelloWorldService.GetInstance();

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

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

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

答案 1 :(得分:0)

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

单身的基本思想是你只能创建一个单个对象。像getInstance()这样的方法用于返回此对象(如果之前已创建)或创建此对象此方法。您应该使用new自行创建对象。单例类的构造函数应该是私有的。您可以创建多个对象的其他方法,这将违背模式构思。仅使用getInstance()的返回值来访问单例对象。

对单身模式的最佳实践进行了详细描述here