ImageVerifierCode 换一换
格式:DOCX , 页数:134 ,大小:428.77KB ,
资源ID:16107460      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16107460.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(无废话C#设计模式Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

无废话C#设计模式Word格式文档下载.docx

1、设计模式的原则?单一职责:你不希望因为电脑内存损坏而更换CPU吧,同样也不应该让一个类有多种修改的理由。对扩展开放,对修改封闭:你一定不希望电脑只有一个内存槽,加内存就要换主板吧,程序也应该能在不修改原先程序的情况下就能扩展功能。里氏替换:如果你买的DX9显卡不支持DX9特性,那么这个显卡一定没法用。如果父类的方法在子类中没有实现那就晕了。在程序的世界中千万别认为鸟都会飞,先考虑清楚将会有哪些鸟吧。依赖倒置:针对接口编程,这样即使实现有变也不需要修改外部代码。其实,现在电脑的硬件、网络通讯等都是符合这个原则的,比如USB接口、PCI-E接口、TCP/IP协议。接口隔离:花3000买一个带拍照、

2、听MP3功能的手机还是花1000买一个手机、1000买一个MP3、1000买一个数码相机呢?买了前者的话手机动不动就要修,而且还不一定是因为不能打电话而修,买了后面三样的话即使修也不影响其它使用,你说买哪个?记得看过一个例子很恰当,说是修电脑比修收音机简单多了。电脑坏了,更换一个零件即可,原因是电脑中的各部分都是基于相对稳定的接口,而且部件各司其职,不会相互影响,电脑本身就是一个非常符合设计原则的产品。收音机的修理没有这么简单了,没有什么部件是插件式的,会修收音机的人肯定明白其中每一个部件的原理。小程序就好像收音机,确实可以这么做,一共才一个人做的,即使重新做也用不了多少时间。几十个人的大项目

3、如果要改一个需求需要牵涉所有人来修改,那么这个项目用不了多少时间就会因为维护成本太大,维护后BUG太多而报废。怎样学习设计模式?学习新概念英文要什么基础?首先,要知道26个字母吧。如果你对面向对象完全没有概念的话,建议先可以看一下面向对象的一些知识。毕竟,设计模式是面向对象编程模式的一种总结。学了26个字母你就可以学习新概念了,但是,为了能更好地学习最好是先学一下国际音标。对于设计模式的学习来说,你可以学习一下UML的一些知识。当然,完全不知道UML也可以学习设计模式,在学习的过程中慢慢也就会UML了。设计模式不是什么很高深的东西,有了这些知识大胆地学习吧。很多人说,看了很多设计模式的文章,为

4、什么就是看不懂呢?我觉得原因可能有两个,第一就是你没有花时间认真看,第二就是看的文章不适合作为切入点。不管学习什么,切入点非常重要,如果切入点不是那么平易近人的话很可能会把你拒之门外,对于初学者来说从实例切入最合适。最好是能碰到自己做过的项目的实例作为切入点,这样你一比较就知道为什么设计模式好了。如果要把设计模式的学习境界分一下级的话,我这么分:第一重:能看懂设计模式的文章第二重:能自己写一个设计模式的骨架第三重:能自己编一个新的运用设计模式的例子第四重:能在写代码的时候想到似乎有设计模式适合,在翻阅资料后找到了这种设计模式第五重:在理解项目的需求后就能意识到哪里可以使用哪种设计模式进行优化第

5、六重:完全掌握了设计模式的精髓,灵活使用各种设计模式以及其变种不管怎么样,多看多做多替换才是学习的办法,别人举例十个都不及自己做一个例子,被动十个原则都不及自己体会出一个原则。每一种设计模式虽然都有一个骨架,但是也不必过于强调这个形式,很多时候根据自己的需求简化一点,改变一点,或者混杂一些其它的设计模式,只要能实现目的了,也是一个不错的选择。很多人会觉得这么多种设计模式没有几种能用得上。我觉得这不是什么问题,用不上那就用不上,这些设计模式是大师经历无数大型项目后的精华,如果能在自己做的一个小项目中用上两三个就很不错了,用上二三十个的项目绝对是怪胎。用不上千万别强求,否则既不利于项目的可维护性又

6、增加了工作量。还有很多人会觉得这些设计模式很多都是相似的。而且每个人的感觉还不一样,有人觉得A和B很相似,有人却觉得A和B很好区分,但是B和C却很相似啊。感觉很好区分,说明你看准设计模式的着重点的,感觉一样说明你看到的还是它的形。双胞胎虽然形一样,但是神肯定不一样的,只要认准设计模式解决的问题,就不会看错。 关于本系列文章本来这些内容都是用来进行公司内部每周知识分享活动的,既然有一些内容了,想想不妨就整理一下贴出来吧。也正由于这个原因,文章中的一些例子都基于团队内部成员所能理解的一些项目,可能这些项目对大家来说比较陌生,不过好处是例子相对比较贴近实际一点。本系列一共有20篇左右,除了介绍23种

7、GOF设计模式中常用的一部分之外(一些设计模式的思想在C#语言中有了更简单的实现,一些设计模式不是很常用)还可能会介绍一些其它有用的设计模式。在这些文章中,我不会过多去说一些理论上的东西,也不会有结构图(这些内容网上到处都是),所有的内容都是围绕相对实际例子展开。我想,只有这样才能更快的吸收设计模式的神而不是其形。在看文章的时候建议你结合设计模式一书以及博客园的其它设计模式相关文章一起看,这样才能对设计模式理解的全面和充分一点。每一篇文章都会有以下部分:意图:抄设计模式一书的,因为意图实在是太重要,所以不得不首先列出。场景:以一个实际的场景来说明为什么要引入设计模式。示例代码:对引入设计模式后

8、场景的说明。代码说明:说明设计模式中的几个角色以及代码中需要注意的地方。何时采用:从代码和应用两个角度说明何时采用这个模式。实现要点:实现这种模式必要的几个地方,或者说模式主要的特点在哪里。注意事项:模式的优点缺点以及什么时候不应该使用设计模式。【注】由于本系列文章发布周期不定,内容简短,并且不是非常完整,发布的新文章不会在首页出现,感兴趣的,请关注BLOG。无废话C#设计模式之二:Singleton意图保证一个类只有一个实例,并提供访问它的全局访问点。场景我们现在要做一个网络游戏的服务端程序,需要考虑怎么样才能承载大量的用户。在做WEB程序的时候有各种负载均衡的方案,不管是通过硬件实现还是软

9、件实现,基本的思想就是有一个统一的入口,然后由它来分配用户到各个服务器上去。需要考虑的问题是,即使在多线程的并发状态下,用户只能通过一个唯一的入口来分配,由此引入了Singleton模式来实现这个唯一的入口。示例代码using System;using System.Collections.Generic;using System.Threading;namespace SingletonExample class Program static void Main(string args) ParameterizedThreadStart ts = new ParameterizedThrea

10、dStart(EnterPlayer); for (int i = 0; i 20; i+) Thread t = new Thread(ts); t.Start(player + i); LoadBalanceServer.GetLoadBalanceServer().ShowServerInfo(); static void EnterPlayer(object playerName) LoadBalanceServer lbs = LoadBalanceServer.GetLoadBalanceServer(); lbs.GetLobbyServer().EnterPlayer(play

11、erName.ToString(); class LoadBalanceServer private const int SERVER_COUNT = 3; private List serverList = new List(); private static volatile LoadBalanceServer lbs; private static object syncLock = new object(); private LoadBalanceServer() SERVER_COUNT; serverList.Add(new LobbyServer(LobbyServer + i)

12、; public static LoadBalanceServer GetLoadBalanceServer() if (lbs = null) lock (syncLock) Thread.Sleep(100); lbs = new LoadBalanceServer(); return lbs; public LobbyServer GetLobbyServer() LobbyServer ls = serverList0; for (int i = 1; if (serverListi.PlayerList.Count playerList = new List public List PlayerList get return playerList; private string serverName; public string ServerName get return serverName; public LobbyServer(string serverName)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1