小强的设计模式之路
坚强2002
这个作者很懒,什么都没留下…
展开
-
团队命脉:目标 结构 信息流 过程
目标 孔子曰:"目标很重要",孟子曰:"老师说得对". 一个团队最重要的是什么?目标!时刻提醒自己是为什么而出发,《TSP:领导开发团队》书中一再强调团队目标的重要性。有了目标才能分清什么是必须要做的,什么是可以不做的,哪些是要先做的,哪些是可以推后的。 目标确立意味着从一开始你就知道自己的目的地在哪里,朝着自己的目标前进,原创 2009-05-16 17:51:00 · 978 阅读 · 0 评论 -
工厂模式与OO设计原则
如果把创建看作一个职责,那么系统中的哪个对象应该拥有这个职责呢?如果把创建看作知识,那么创建知识应该放置在什么地方呢?说到职责我们不得不说一下著名的GRASP原则:GRASP是通用职责分配软件模式(General Responsibility Assignment Software patterns)的简称。它包含了9大模式,分别如下所示: 1 创建者(Crea原创 2008-05-06 10:54:00 · 716 阅读 · 0 评论 -
死于复杂
Roy Tennant再一次在《图书馆杂志》(Library Journal)上声讨MARC(机读目录)的复杂性,7年前他就呼吁让这个标准死掉。MARC是图书馆领域的数据格式标准有30多年的历史,下面是来自维基百科的描述: MARC is an acronym, used in the field of library science, that stands for M原创 2009-10-16 08:28:00 · 606 阅读 · 0 评论 -
Kode Reviews:危机中的项目自救
10月份ACM Communications刊发了George V. Neville-Neil的文章:Kode reviews 101- A review of code review dos and donts.他的公司经历了一轮裁员,但是不久发现系统的某些部分内容没有人能理解,只能高薪聘之前的员工做"顾问"来收拾烂摊子.而这种情况已经再三上演,怎样才能让足够多的人了解系原创 2009-10-13 12:01:00 · 644 阅读 · 0 评论 -
内外兼修 用户从1到100万
最近大家都在关注Kevin Rose的《9 Ways to Take Your Site from One to One Million Users》,这篇文章从内外兼修的角度为网站发展给出建议,用户的增长只是一个指标,其代表了网站整体品质的提高。我将这9条做了一个分类并以博客园为例做了一个分析,请看下面的思维导图: 对于网站宣传市场方面的建议,我是外行不敢原创 2009-10-17 09:00:00 · 3321 阅读 · 5 评论 -
A*寻径算法新手入门
译者说:无论是现在风靡的网页游戏,还是老牌的网络游戏,寻径几乎都是难以回避的一个话题,而寻径必然从A*算法开始。关于A*国外相关的资料相当丰富,很多时候让我们为难的还不是具体的算法,而是A*的基本思路和概念。很多门槛都是从一堆陌生的概念开始的。而本文则是A*算法真正入门级的读物,不仅仅是清除了概念上的障碍还给出了相关话题深入学习的线索。文中有几点模糊的地方,我已经和原作者沟通原创 2010-05-18 09:00:00 · 1215 阅读 · 0 评论 -
RegexOptions.Compiled真的是性能杀手么?
我们经常胡乱对付着解决问题,欣喜于不大不小的成功,接受失败,并且相信下次会更幸运。 ----摩根•琼斯 "使用正则表达式的时候一定不要使用RegexOptions.Compiled选项,不仅不会加速还会让内存飙升;原创 2010-05-19 19:00:00 · 662 阅读 · 0 评论 -
回头再说:Uploadify跨域上传原理
《 回头再说:jQuery跨域原理 》一文提到浏览器的同源策略以及使用JsonP的方式实现跨域;在评论中金色海洋提出了一个问题: 我最近在用 uploadify + ashx 来做文件上传的功能。都测试成功了,但是发现我可以提交到其他的网站里面。我是在本地测试了。两个网站,IP地址相同,使用端口来区分。一个端口是8001,另一个是8002 。两个网站都有上原创 2010-05-21 20:00:00 · 2156 阅读 · 1 评论 -
.Net 4 StringBuilder新增Clear方法及其实现
以前我们使用StringBuilder如果要把它重置,往往是使用new StringBuilder()的方法;.NET 4.0 中StringBuilder添加一个Clear()方法;我们可以使用:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight原创 2010-05-24 19:00:00 · 1798 阅读 · 9 评论 -
回头再说Unity
《IoC 容器和Dependency Injection 模式》一文Martin Fowler先生用了较大的篇幅来比较了依赖注入(Dependency Injection) 模式和服务定位器(Service Locator)模式,并提出一个二者都遵循的的原则:应该将应用和配置分离.作为依赖注入方面的经典之作这篇文章为我们学习给出了一个个路标,我们可以根据自己的实践来将深入理解作者原创 2008-10-14 09:53:00 · 887 阅读 · 0 评论 -
流程 ,Not流程 ?
为什么项目过程中折腾我们的往往是一些微不足道的小事?新功能添加"顺手就改,转眼就忘,一旦出错,一问就蒙"的情况如何避免? 答案:流程 一年前我还对流程表示反感和排斥,因为我将"流程"简单地等同于堆积如山的文档和照本宣科的会议,牺牲了弥足珍贵的设计和开发时间.而现实不会在你自作聪明的时候纠正你,而是在后续的某个时间点上给你一记响亮的耳光.屡原创 2008-10-21 08:53:00 · 568 阅读 · 0 评论 -
聚焦UML实践第一步
我独不解中国人何以于旧状况那么心平气和;于较新的机运就这么疾首蹙额;于已成之局那么委曲求全;于初兴之事就这么求全责备?原创 2009-05-26 08:51:00 · 660 阅读 · 0 评论 -
解决问题:心态 原则 方法
什么是问题? 1. 上下文 -- 和问题相关的场景,指一组已经是明确已知的,关于问题的条件的描述。 2. 目标 -- 指关于构成问题的结论的明确的描述。 3. 障碍 -- 指问题的正确解决方法不是显而易见的,必须通过一定的思维活动,才能找到答案。 良好的定义问题是解决问题的关键步骤。定义问题就是鉴别期望和现状的差异。有如下几个关键点:1. 首要的是,收集整原创 2009-07-06 09:51:00 · 629 阅读 · 0 评论 -
AOP in Asp.net MVC
不同的观点,开拓迥然不同的世界.Another point of view can sometimes open up a whole new world. ---- HSBC本文原创 2009-06-09 10:51:00 · 900 阅读 · 0 评论 -
视角的力量--再说OO设计原则
《OO设计原则总结》一文中我提出了一个问题:如何更好的使用这些原则?怎样在实践中遵守这些原则,使用三种视角思考问题就是答案之一; 本文内容包括:1.为什么我们过早的纠缠于细节?问题的本质是什么?2.救命稻草--Martin Fowler的三层视角理论3.三层视角--回头再说OO设计原则 为什么我们过早的纠缠于细节?问题的本质是什么?原创 2008-04-15 10:54:00 · 565 阅读 · 0 评论 -
OO设计原则总结
什么是设计原则? 设计原则是基本的工具,应用这些规则可以使你的代码更加灵活、更容易维护,更容易扩展。基本原则 封装变化Encapsulate what varies. 面向接口编程而非实现 Code to an interface rather than to an implementation.优先使用组合而非继承 Favor Composition Over In原创 2008-03-31 13:54:00 · 616 阅读 · 0 评论 -
Interaction design pattern
Interaction design is the art of facilitating interactions between humans through products and services. -- --《Designing for Interaction》 自动完成控件适用什么场景?Drag&Drop的设计初衷是什么?分页控件又原创 2008-08-28 15:53:00 · 675 阅读 · 0 评论 -
控制反转容器&依赖注入模式
控制反转容器&依赖注入模式Inversion of Control Containers and the Dependency Injection pattern 作者:Martin Fowler翻译:坚强2002源文档 http://www.martinfowler.com/articles/injection.html> 轻原创 2008-07-30 09:53:00 · 812 阅读 · 0 评论 -
复用:设计模式 反模式 分析模式
1987 年,SmallTalk社区的Ward Cunningham 和Kent Beck发表了一篇文章《Using Pattern Languages for Object-Oriented Programs》这标志着建筑大师的思想落户软件开发领域。 设计模式的起源是建筑师Christopher Alexander 的研究,不同时代建筑师留下的伟大建筑作品中,有很原创 2008-07-21 11:53:00 · 592 阅读 · 0 评论 -
Adapter Façade Decorator 与OO设计原则
Adapter Façade Decorator设计模式在分类上属于结构模式。结构模式描述怎样将类和对象结合起来形成一个更大的结构。 将类和对象结合起来形成一个更大的结构,这里就有一个耦合的问题,如果类和对象是非常稳定的,耦合到什么程度都是没有问题的。问题还是归结到变化上,如果发生变化强耦合的后果就是修改压力会沿着依赖链条传递下去,就像多米诺骨牌一样原创 2008-05-16 12:53:00 · 583 阅读 · 0 评论 -
.Net 4.0 延迟初始化:Lazy<T>
昨天我们说了一个.Net 4.0里面StringBuilder新增的Clear()方法及其实现,非常简单.今天要说的就稍微复杂一点了. 语言和模式互相促进,语言让模式实现有更多可能性,越来越多优秀的被语言实现.模式实现的责任从开发者转移到语言.延迟初始化(Lazyinitialization)已经在.Net 4.0中给出了默认实现.本文将探究其使用方法和实现. 为原创 2010-05-25 14:00:00 · 1234 阅读 · 6 评论