如何编写优雅的代码:07. 设计模式应用案例(下)
摘要:前文用C#代码实现了Facade模式、Adapter模式、Strategy模式、Bridge模式和Abstract Factory模式解决实际业务需求。本文将继续以C#代码为例,实现我在前面介绍的11个模式中剩下的6个模式:Decorator模式、Observer模式、Template Method模式、Singleton模式、Factory Method模式和Prototype模式。按照实现方法的不同,该11个模式可分成三类:创建型模式(Abstract Factory, Singleton, Factory Method, Prototype)、结构型模式(Adapter, Bridge, Decorator)和行为型模式(Strategy, Observer, Template Method)。
阅读全文
posted @
2013-10-08 22:49
Maxwell Zhou
阅读(1657)
推荐(4) 编辑
如何编写优雅的代码:06. 设计模式应用案例(上)
摘要:前文一共介绍了四人帮(Gang of Four)总结的的11个设计模式,对初学者而言,光看文字描述和UML类图略显抽象。本着Learning in Doing的原则,本文将举一些实际的业务需求场景,以C#代码为例,讲述在编程的过程中如何应用设计模式,实现模块间低耦合,高内聚,编写出优雅的代码。需说明的是,接下来的例子相对简单,省略了业务逻辑代码,目的是为了让大家专注于设计模式的应用,忽略业务逻辑本身的复杂性,毕竟本文的目的是加深对设计模式本身的理解。
阅读全文
posted @
2013-10-07 12:27
Maxwell Zhou
阅读(2429)
推荐(0) 编辑
如何编写优雅的代码:05. 设计模式(下)
摘要:截至上一篇文章,已经介绍了8个常用的设计模式。四人帮(Gang of Four)总结的第一版设计模式中,一共有23个模式,后来又陆续总结了些,应该有三十多个。个人实际工作中常用到11个设计模式(前文介绍的8个以及本文将介绍的3个),我认为这也是最常用的模式。本文将再介绍3个常用的设计模式:Singleton(单体)模式、Factory Method(工厂方法)模式和Prototype(原型)模式。在下一篇将介绍部分设计模式的具体应用。
阅读全文
posted @
2013-10-05 17:46
Maxwell Zhou
阅读(1169)
推荐(0) 编辑
如何编写优雅的代码:04. 设计模式(中)
摘要:前文详细介绍了Façade模式、Adapter模式、Strategy模式和Bridge模式,并进行了比较。本文将再介绍四个常用的设计模式:Abstract Factory(抽象工厂)模式、Decorator(装饰)模式、Observer(观察者)模式、Template Method(模板)模式。开始介绍之前,笔者想说一下自己经常纠结的一个问题,什么时候开始考虑应用模式?作为一个新手,刚接触设计模式时都会为之倾倒,自觉醍醐灌顶,非常的迫切将所学的设计模式应用于实践,所以在编程的初期就会考虑各种模式的应用。个人的经验告诉我,对业务的理解是一个渐进明细的过程,开发的初期往往很难看到整个业务需求的全貌和本质,此时强行应用设计模式往往会导致Over Engineering。笔者认为应用设计模式的最佳时机往往是在代码重构的时候,彼时你已掌握业务的本质,对模式的应用往往能够恰到好处,其实这也是JIT的思想。
阅读全文
posted @
2013-10-02 22:57
Maxwell Zhou
阅读(1733)
推荐(2) 编辑
如何编写优雅的代码:03. 设计模式(上)
摘要:前文介绍了设计结构优良的代码应该遵循的设计原则和尽量避免的设计臭气。基于这些原则,四人帮(Gang of Four)抽象出一些常用的设计模式,用于解决在编程过程中反复遇到的设计问题。笔者认为“复用”是软件设计最具价值的理念之一,甚至有人提出软件即复用。通常我们认为复用是指代码层面的复用,然而笔者认为设计模式是设计思想的重用。本文将重点介绍常用的四个模式:Façade模式、Adapter模式、Strategy模式和Bridge模式。考虑到部分模式比较抽象难懂,笔者将在后面专门写一遍设计模式应用案例的文章。
阅读全文
posted @
2013-09-21 13:09
Maxwell Zhou
阅读(1104)
推荐(0) 编辑
如何编写优雅的代码:02. 设计原则
摘要:前文介绍了优雅代码的三个标准:风格好、结构好和性能好的三好代码。对于风格好有很多的代码规范供参考,都是编程习惯的问题,养成就好。但对于结构好这种“内功”则需要一定时间的修炼,理论与实践的互相印证,不断的思辨优秀的设计思想,才能游刃有余地将一些优秀的设计原则应用到实际软件开发中。本文,笔者将重点介绍:设计的由来、糟糕的设计给软件带来的隐患以及优秀的设计应该遵循的五大原则。
阅读全文
posted @
2013-09-15 12:17
Maxwell Zhou
阅读(886)
推荐(0) 编辑
如何编写优雅的代码:01. 概述
摘要:笔者认为所谓优雅的代码包含三部分涵义:风格好、结构好和性能好的三好代码。不仅仅是C#语言,所有的编程语言都适用,只不过每种语言的特性和语法不同,实践三好代码的方式和途径也不尽相同。需要注意的是,在有些时候这三种内涵之间是矛盾的。例如,结构好的代码,有时候却会导致性能的下降。遇到这种情况,也不必纠结,在各种利益之间做好权衡,保证全局利益的最大化才是王道。本文以C#语言为例,总结C#编程实践中,如何做到代码的优雅。
阅读全文
posted @
2013-09-08 21:54
Maxwell Zhou
阅读(1142)
推荐(0) 编辑
.Net平台互操作技术:03. 技术验证
摘要:上面两篇文章分别介绍了.Net平台互操作技术面临的问题,并重点介绍了通过P/Invoke调用Native C++类库的技术实现。光说不做是假把式,本文笔者将设计实验来证明P/Invoke调用技术的可行性。
阅读全文
posted @
2013-08-17 16:50
Maxwell Zhou
阅读(486)
推荐(0) 编辑
.Net平台互操作技术:02. 技术介绍
摘要:上一篇文章简单介绍了.Net平台互操作技术的面临的主要问题,以及主要的解决方案。本文将重点介绍使用相对较多的P/Invoke技术的实现:C#通过P/Invoke调用Native C++ Dll技术、C#调用Native C++代码示例、非托管内存的释放和平台调用性能提升技巧。
阅读全文
posted @
2013-08-17 16:21
Maxwell Zhou
阅读(500)
推荐(0) 编辑
.Net平台互操作技术:01. 主要问题
摘要:在.Net平台进行程序设计时,经常遇到基于Native C++,已经开发出很多类库,而现在需要用C#语言调用Native C++类库。这种情况在金融公司的量化投资部门经常发生。原因是,金融业务系统的对计算性能极其敏感,所以很多计算模块是用Native C++实现;然而用户操作界面用一般采用C#开发,理由很简单,C#开发效率确实胜过C++。本文围绕C#语言调用C++代码存在问题进行讨论。
阅读全文
posted @
2013-08-17 15:48
Maxwell Zhou
阅读(448)
推荐(0) 编辑
C# 邮件服务总结
摘要:在企业级应用中,用户经常需要掌握当前业务流转的状态。为满足该业务需求,通常的解决方案是,在业务流程的关键节点处设置系统提醒服务,如:手机短信提醒和邮件提醒等。大型企业一般都会在企业内部部署企业级的邮件服务器,所以邮件提醒服务较手机短信提醒会更加经济和安全。本文将总结,在企业级业务系统中,如何使用.Net的邮件服务接口,实现邮件提醒功能。
阅读全文
posted @
2013-06-12 19:45
Maxwell Zhou
阅读(1195)
推荐(1) 编辑
C#性能优化方法和实践
摘要:关于C#性能优化的介绍有很多资料,如《Effective C#》、《More Effective C#》以及互联网上的技术文档都有介绍,对这方面内容感兴趣的程序员推荐系统地阅读。本文,我主要介绍工作实践中对C#性能优化的体会、认识和实践。
阅读全文
posted @
2013-06-01 18:26
Maxwell Zhou
阅读(3286)
推荐(2) 编辑
基于Asp.net MVC的系统架构
摘要:2009开始接触.Net平台的相关技术,近年来也一直在用Asp.net MVC搭建一些业务系统。今天,我将介绍系统搭建的过程中用到的技术,工具和思想,抛砖引玉!
阅读全文
posted @
2013-03-02 13:19
Maxwell Zhou
阅读(1006)
推荐(1) 编辑