浏览:7722008-01-08 18:54   来自斧头帮少帮主      :

除了创建实例的时间不一样外还有哪些不同?
一直找不到相关达人的详解.望赐教!

楼主
  4个月前   BirdsHover      :
在C#里单件模式还是要靠静态变量和静态方法支持才能实现的。主要区别在于静态变量编译时就生成了,而单件要运行时创建(个人理解)。而静态变量非自维护的,而单件只能由自身创建。
回复  1楼 回到顶楼 
  4个月前   麒麟.NET      :
静态类是不能实例化的,而单件模式是可以实例化的,并且只允许进行一次实例化。
回复  2楼 回到顶楼 
  4个月前   斧头帮少帮主      :
顶上去,
如果你有两位说的这点区别,感觉单态模式存在就没什么必要了,毕竟对于2G的内存,在编译和运行时创建没有什么区别.
回复  3楼 回到顶楼 
  4个月前   金色海洋(jyk)      :
看看head first 里的说明应该就可以明白一些吧,我现在也没有太懂。

1、静态类更像是一些函数的集合;而 单态模式 是有机的集合,就是说结合得更密切吧。

2、静态类 只能实例化一次,而且无论如何也只能实例化一次,且不用操心;
而单态模式就要手动作限制了,弄不好就有可能会实例化多次。

光看概念也不会有太深的理解吧,等到实际中能够应用到了就会理解了。我现在也还没有用到。

只是用到了策略和模版。
回复  4楼 回到顶楼 
  4个月前   Colin Han      :
设计模式仅仅是一种思想。静态类可以作为单件模式的一种实现方式。两者并没有可比性。
回复  5楼 回到顶楼 
  4个月前   Colin Han      :
如果你需要,可以在你的系统中包含一个容器,单体都从这个容器中取得。这也可以说是一种单体模式的实现方式。而这种实现方式并不需要依赖静态字段或静态方法。
回复  6楼 回到顶楼 
  4个月前   deerchao      :
Singleton实例可以实现接口,静态类不可以.
回复  7楼 回到顶楼 
  4个月前   横刀天笑      :
麒麟.NET 说的很明白了,静态类不能实例化,那么也就根本不存在静态类的实例,那么在一些需要类的实例的地方(比如方法参数的传递),静态类就无能为力。单件(我习惯这么叫),是有实例的,它不是静态的。至于到底怎么个差别细细体会吧
回复  8楼 回到顶楼 
  4个月前   斧头帮少帮主      :
@Colin Han
静态类可以作为单件模式的一种实现方式。

我比较同意这个观点.
回复  9楼 回到顶楼 
  2个月前   iamarabbit      :
我觉得单件和静态类成员在进行面向对象思考时是有区别的。

静态成员更多上是代表实例无关的数据或操作。比方说

class Human
{
public Human FirstHuman;
public History GetHumanHistory();
public Type GetType();
}

单件是为了实现“该对象在程序中只有一个实例”,比如下面的例子

class MainBoard
{
public static int UpdateNums; // 主板升级次数,静态成员
public static MainBoard Current; // 当前机器上的主板

public string Company; // 实例成员,一个主板的生产厂商
}

个人理解,仅供参考,嘿嘿
回复  10楼 回到顶楼 

你还不是小组成员,加入小组以后才能发布新主题!
> 返回“设计模式”


其他话题

1 16728