C#面向对象设计模式纵横谈:Decorator 装饰模式
子类复子类,子类何其多 假如我们需要为游戏中开发一种坦克,除了各种不同的型号的坦克外,我们还希望在不同场合中为其增加以下一种或多种功能:比如红外线夜视功能,比如水陆两栖功能,比如卫星定位功能等等。 ...
子类复子类,子类何其多 假如我们需要为游戏中开发一种坦克,除了各种不同的型号的坦克外,我们还希望在不同场合中为其增加以下一种或多种功能:比如红外线夜视功能,比如水陆两栖功能,比如卫星定位功能等等。 ...
系统的复杂度 假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。 如何使用这样的系统 动机(Motivation) 上述A方...
面向对象的代价 面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销。比如图形应用...
直接与间接 人们对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。 假设A要访问B三次。如果A和B是分布式中的两个机器,那么A需要跨机器调...
无处不在的Template Method 如果你只想掌握一种设计模式,那么它就是 -----Template Method!
变与不变 变化——是软件设计的永恒主题,如何管理变化带来的复杂性?设计模...
耦合与变化 耦合是软件不能抵御变化灾难的根本性原因。不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系。 创建型设计模式解决的创建者和被创建对象的耦合问题; 结构...
动机(Motivation) 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。在这种情况下,将特定领域的问题表达为某种语法规则下的句子,...
依赖关系的转化 动机(Motivation) 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断地变化。 在这...
我一直在从事企业信息管理系统的开发,目前的产品拥有了数百个企业客户,作为企业管理信息系统,最大的挑战是如何满足不同企业通用需求的同时快速满足企业个性化需求,除了企业战略、组织架构、流程体系等紧密相...
现在越来越多的人应用jQuery了,有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视...
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。...
目前开源工作流引擎用的最多的是jbpm , 各种特性都不错, 文档也比较多, 下面只简单列举一下其他几种工作流引擎的特性。 Apache ODEEnhydra SharkBonitaOpen Business EngineEclipse JWT 支持的流程建模标准...
当前,HTML5标准正迫近最后阶段(或者如HTML委员会共同主席Same Ruby所称的“第一次收官”),其中,细则有了很大的调整。 临别赠言 走好,bb元素 除了知道它是一个可以将页面保存为离线程序的按钮,...
我们曾给Widget开发者提供过一些小教程,很多朋友都需要第一手的开发资料,我们联系到一位正在开发Widget小工具的作者。作者从事Android开发将近两周了,Android给我的总体感觉是组件功能较弱,不过相对来说也比较...
诚然Visual Studio是一个非常强大的开发环境,但是使用久了以后,觉得在细节方面还是有很多地方比不过Eclipse。比如: 1. 界面设计没有充分考虑空间占用 Visual Studio的工具窗口占用了过多的空间。从下图...
如何激励程序员?关于这个问题,有个内在的矛盾。我想下面这两幅漫画就完美地表达出来了。 这是个普遍现象,我也在自己身上发现这个问题了。如果其他程序员告诉你,因为你的代码比较烂,他们正在重写。没有什么比...
abut全称为annotations-based unit testing,基于注释的单元测试工具,也可以就地取此英文的原义(毗邻)称呼它。众所周知,javascript实在不好做测试,即使我这个工具现在对事件响应这东西还是无可奈何的,这只能黑盒测...
在担任公司高管的几年间,我面试过数以百计的各个层面的员工,其中最让我感到遗憾的一个现象就是很多人有着非常好的素质,甚至有的还是名校的毕业生,因为不懂得去规划自己的职业,在工作多年后,依然拿着微薄的薪水,为...
现在越来越多浏览器已经实现支持 HTML5,其中 iPad 上的 Safari 浏览器对 HTML5 支持就非常完美,所以我们做的 iPad 导航就是完全用 HTML5 写的。 IE 无法渲染 HTML5 样式 IE 的用户完全不是我们的目标用...
前两天在网上看到世界知名的电骡服务器Razorback 2被查封、4人被拘禁的消息,深感当前做eMule / BitTorrent等P2P文件交换软件的不易。以分布式哈希表方式(DHT,Distributed Hash Table)来代替集中索引服务器可...
有一些年轻的程序员向我咨询,将来的路应该怎么走?俗话说,条条大路通罗马。不同的路都能走向成功。到底选哪条路,取决于自己的兴趣。可能有程序员会问:如果还没找到自己的兴趣怎么办?我的建议是多尝试,努力做,这是职...
对于熟悉.NET程序员来说,编写iOS应用程序的最佳选择自然是MonoTouch。在上一篇文章里,我们已经在Mac OS X上安装了MonoTouch开发环境,并已经能够在Mac OS X和Windows之间共享文件。现在我们就可以来简单体验一...
前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序。虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用MonoTouch进行开发。 MonoTou...
在近日举办的Modern .NET DDD Conference会议上,Chris Hardy在他的演讲中展示了如何基于.NET/C#,开发面向Windows Phone 7,iPhone及Android三个平台的应用程序,以及其中的注意事项。 首先Chris列举了三个平台...
一、数据并发带来的各种情况 ①脏读:事务A读到事务B尚未提交的数据,并基于这个数据进行后续操作 ②不可重复读:事务A读取数据后,被事务B修改或删除,事务A再次读取时前后两次读取的数据不一致 ③幻像读:...