注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

暇隙读书(2)—模式工程化及扩展之一  

2013-01-06 18:39:46|  分类: UML+设计模式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

暇隙读书(2)—模式工程化及扩展之一

这几天有时间抽空又开始看一些书,其中有WCF的,也有设计模式的,也有USB的,觉得这几天看设计模式这本书,对自己有很多的触动,把这些写下来,以之为记。

这里没有按章节来,只是把想到的整理一下,主要有以下几点:

一、单例模式中的几个注意点:

1、  常用的外部方式:也就是自己做一个静态全局变量。

2、  内部方式:也就是私有构造函数,这个记得前面还博文中说过面试时和别人的争论,就是因为这个。

3、  正常使用的经典的多线程方法:就是加锁然后多重判断(double check)是否已经创建,注意他这里使用了volatile关键字。但在c#中,可以使用:

   Public class Singleton

{

 Singleton()

 Public static readonly Singleton Instance = new Singleton();  

}

4、  提出了粒度大小下的单件问题。在c#下提供了:

[ThreadStatic]

Public static readonly Singleton Instance = new Singleton();  

但其在WEB中使用就有弊端了,所以要使用类似经典的方法在httpcontext上,来控制生成单件对象。

5、  分布式的单件:这个就更复杂了,他提出的方法是使用一个Proxy(代理)的方式,大家都通过代理来获得单件。

6、  无法实现单件的败笔:有以下几种情况,继承了IConloneable及其相关类型,另外就是序列化。这两种情况下是实现不了单件的,即使你写的是单件的代码。原因大家都清楚,都进行了对象的复制和重现。

二、工厂模式:

这里主要是使用了NET FRAMEWORK自带的反射类,Activator.CreateInstance来实现不再采用比较复杂的反射创建。

三、命令模式:

命令模式主要是提供了一个异步委托的调用方式,以前没怎么用过,这里看到,也算有个视野大开的感觉。

Callback.BeginInvoke(data,callback.EndInvoke,null);

 

开卷有益,诚不我欺。

  评论这张
 
阅读(474)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017