none
请教Activator.CreateInstance 的意思?动态创建实例是什么意思? RRS feed

  • 问题

  • Activator.CreateInstance,如题,所谓的动态创建和new一个实例有什么不同?Activator.CreateInstance通常被用来做singleton模式的实现,这种模式具体有什么好处啊?谁能详细说说呀?为什么非得用Activator.CreateInstance来实现singleton不能用new?
    2009年7月14日 16:31

答案

  • 你好,Activator.CreateInstance()方法是用来动态创建类对象的,在运行的时候指定需要需要创建的类型,而new是在编译的时候就指定了类型。
    他们之间最大的区别就是动态!

    至于这个方法和设计模式之间没有必然的联系,这个方法不是为某种设计模式单独创建的。至于设计模式,这个主题比较大,建议你搜索一下相关资料来了解各个模式的特点!
    邹俊才
    2009年7月15日 2:11
    版主
  • 你好!
         我来通俗的解释一下:
         你用new的时候需要知道这个类是什么,使用Acrivator.CreateInstance只需要知道类的名字(字符串表示)或类的Type就可以了
         多了解一些反射的内容对你理解这个方法会比较有帮助!
    周雪峰
    2009年7月15日 7:04
    版主
  • 您好,使用new需要客户程序知道被实例化的类,这样两者之间就形成了耦合。而采用Acrivator.CreateInstance则可以解耦。例如当您面向接口编程时,就不需要与具体实现相耦合。.net本身就是一个很好的例子,应用了config来决定运行时的实例。
    当编程思想从面向具体实现到面向接口,就会有体会了。
    2009年7月15日 7:44

全部回复

  • new需要编译的时候指定类型
    软件设计思想不属于.Net类库的一部分,如果你有这方面的问题,不用浪费时间在这里等,找个设计模式的论坛找以前的讨论就可以。
    没有人说不能用new啊?你怎么会这么认为?


    Please mark the post answered your question as the answer, and click the chartreuse pyramid floating over nothingness/null to mark other helpful posts as helpful. This posting is provided "AS IS" with no warranties, and confers no rights.
    Visual C++ MVP
    2009年7月14日 19:48
    版主
  • 你好,Activator.CreateInstance()方法是用来动态创建类对象的,在运行的时候指定需要需要创建的类型,而new是在编译的时候就指定了类型。
    他们之间最大的区别就是动态!

    至于这个方法和设计模式之间没有必然的联系,这个方法不是为某种设计模式单独创建的。至于设计模式,这个主题比较大,建议你搜索一下相关资料来了解各个模式的特点!
    邹俊才
    2009年7月15日 2:11
    版主
  • 你好!
         我来通俗的解释一下:
         你用new的时候需要知道这个类是什么,使用Acrivator.CreateInstance只需要知道类的名字(字符串表示)或类的Type就可以了
         多了解一些反射的内容对你理解这个方法会比较有帮助!
    周雪峰
    2009年7月15日 7:04
    版主
  • 您好,使用new需要客户程序知道被实例化的类,这样两者之间就形成了耦合。而采用Acrivator.CreateInstance则可以解耦。例如当您面向接口编程时,就不需要与具体实现相耦合。.net本身就是一个很好的例子,应用了config来决定运行时的实例。
    当编程思想从面向具体实现到面向接口,就会有体会了。
    2009年7月15日 7:44