NET.设计模式

随笔档案 - 2011年7月

.NET简谈设计模式之(命令模式)

2011-07-29 16:35 by 南京.王清培, 1002 visits, 网摘, 收藏, 编辑
摘要:我们继续学习设计模式系列文章。 本篇要讲的是命令模式,其实命令模式也比较好理解,没有用到多高深的技术,也不需要多复杂的抽象。只需要我们脑海里能有一个大概的原型,等我们遇见类似问 题的时候我们能通过巧妙的方式来解决。我们做应用层开发的大部分接触的都是一些模式、框架、思想等等,不像搞低层开发的,他们研究的可能多数是一些技术实 现的问题,而我们是学习实现的方法论。应用层开发在技术的复杂程度上是有限的,在组合技术的实现上是复杂的。所以有一些.NET架构师确实比较厉害,他们 能很早的就料到会出现什么问题,他们有很强的架构思想,对设计模式的掌握、对架构设计思想、对敏捷、极限 阅读全文

.NET简谈设计模式之(单件模式)

2011-07-29 13:48 by 南京.王清培, 1211 visits, 网摘, 收藏, 编辑
摘要:我们继续学习设计模式系列文章。 今天要讲的是单件模式,其实单件模式是比较简单的设计模式,在我们日常开发过程中也是经常用到的。 单件模式:单件模式是一种用于确保整个应用程序中只有一个类实例且这个实例所占资源在整个应用程序中是共享时的程序设计方法。 我想如果初学者对一些基本概念能熟练掌握 阅读全文

.NET简谈设计模式之(抽象工厂模式)

2011-07-27 14:31 by 南京.王清培, 1329 visits, 网摘, 收藏, 编辑
摘要:我们继续学习设计模式系列文章。 今天要讲的是设计模式中经常被用到的“工厂模式”,所谓工厂模式就是将对象的创建交给一个叫做工厂的对象来统一进行处理。主要是将对象的依赖关系进行解 耦,消除对象之间的直接耦合。那么工厂的使用有几种方式呢?那就要看我们对工厂的理解了,工厂是创建对象的一个逻辑名称,工厂可以是一个方法、一个静态类 等等。只要起到对象的创建就能给它赋予上一个工厂的名称。 那么什么是抽象工厂呢?我想很多人对它的理解并不是很透彻,甚至有的人就觉得工厂一定要是抽象的。我表示不理解,一个抽象类中连一个抽象的、虚的成员都没 有,我想问这个类是干什么用的,仅仅是模仿《设计模式》中的例子在做吗 阅读全文

.NET简谈设计模式之(装饰者模式性能问题?)

2011-07-24 16:44 by 南京.王清培, 794 visits, 网摘, 收藏, 编辑
摘要:我假设看这篇文章的朋友对装饰者模式都能有各自的、深入的理解。因为这篇文章是讨论装 饰者模式的性能问题。 在本人的“.NET简谈设计模式之(装饰者模式)”一文中比较详细的讲解了装饰者模式的一般应用,但是我总是感觉装饰者模式隐隐约约之中有点不完美。经过 我昨天一整天的思考、推敲终于找到了它隐隐约约中的那点不完美是什么,为了行为去继承带来的无辜的性能开销。所以本人想把它写出来,跟大家讨论下装饰者模 式的性能该如何平衡。是用时间换空间还是用空间换时间,这里的时间就是我 阅读全文

.NET简谈设计模式之(装饰者模式)

2011-07-23 11:31 by 南京.王清培, 982 visits, 网摘, 收藏, 编辑
摘要:装饰者模式其实有点难以理解,特别是对初学者来说可能有点晕,因为它的概念互相冲突, 哪里互相冲突我们下面会讲解到。 本人保持一贯的写作风格,重在入门。在本人的这篇文章中会用一个比较恰当的比喻来让我们对问题迎刃而解,例子虽然简单但是重点突出。 在写这篇文章之前我在网上大概搜了一下关于“装饰者模式”的一些文章,但是讲解的效果都不太理想。要么就是找书搬过来的,要么就是对着书的例子从新创造一 个。我看了大概三四篇这样子,不行看着头晕。文章的主人很想把问题的关键说清楚,但是很少能在原有代码的基础上画龙点睛,搞不好就是画蛇添足。如果没能清 楚的介绍模式代码中的任何一脚,都有可能給看文章的初学者带来新的问题,没能够透彻的体现出文章的重点。下面我们从理清头绪开始。[王清培版权所有,转载 请给出署名] 设计模式是用来解决某一个问题的一个方法,一个模式是对应着 阅读全文

程序员该如何规划自己的人生

2011-07-20 19:47 by 南京.王清培, 2580 visits, 网摘, 收藏, 编辑
摘要:其实大大小小的文章讨论程序员的人生规划不计其数。本人还是坚持谈谈个人对于程序员日 后规划的看法,也是本人做事的一种风格跟对人生的态度吧。希望能给大家有点帮助。 首先我们庆幸的是我们是软件行业的一员,我们作为程序员从最基础的“农民工”开始的,从反反复复的代码中成长起来。我们要为我们的职业感到骄傲才对,他赋 予了我们善于动脑的习惯,程序员每天要应对的问题多种多样,我们要快速的思考,不知不觉我们锻炼出了思考的习惯。[当思考成为习惯,成功将随之而至] 思考是前进的本质,我们在当初能进入程序员行业,就说明我们还是喜欢挑战的。但是话说回来,程序员的最终是需要归宿的,我们不可能一辈子这样处于“基 层”。所以我们需要思考,我们以后的归宿在哪里,等过了三十岁,我们的本钱是什么。可能你会说我有的是编程的经验,是项目经验,我框架写的很好。技术就好 比水,“可载舟亦可覆舟”。 阅读全文

.NET简谈设计模式之(策略模式)

2011-07-20 11:30 by 南京.王清培, 1284 visits, 网摘, 收藏, 编辑
摘要:策略模式在我们日常开发中经常被用到,这篇文章不是策略模式的深入讨论和学术研究,只是让初学者能有个基本的了解。 什么叫策略:1. 可以实现目标的方案集合;2. 根据形势发展而制定的行动方针和斗争方法;3. 有斗争艺术,能注意方式方法。 什么叫模式:模式(Pattern)其实就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出 阅读全文

.NET简谈路由事件

2011-07-18 16:11 by 南京.王清培, 2303 visits, 网摘, 收藏, 编辑
摘要:本篇文章讲解关于路由事件的相关原理。 什么叫路由事件,字面理解就是事件是可以传递,路由的意思也好理解。路由事件其实就是,事件是会随着某种变化,来回传递。路由事件其实在.NET2.0时期就已经存在了,只不过在一般开发过程中用不到。 从C#3.0开始,就已经封装了关于路由事件的机制。其实这种实现应该可以换个名字来解释。我们可以给路由事件起个便于理解的名字,“事件的路由设计模式”。我们都知道,任何大的框架都是从微小的基本 阅读全文

会写代码的项目经理

2011-07-16 11:39 by 南京.王清培, 2561 visits, 网摘, 收藏, 编辑
摘要:也许文章的标题起的带有讽刺的味道,其实这也是本人的一个小小的疑问。 一个项目的领导者该不该对技术有一点深度的了解或者说项目经理应该是一个不错的高级程序员。我的头跟我说项目经理不需要写代码也不需要对技术有多了解,只 要对项目的进度有个整体的把控就OK了。这种观念一开始我不太赞同,项目经理对技术的实现没有一定的了解,在安排进度的时候是不是会草率的了事。给程序员 预留的时间也不能准确的控制好,是不是会导致项目的进度控制的不太合理; 在参与开发项目的时候尤其是有一定技术含量的时候,更要项目经理对技术的实现有自己独特的见解,能帮助程序员理清头绪。但是话说回来,项目经理不可能帮每 个程序员都去解决技术问题。在一些中小企业,项目经理显的很“肥胖”,这种“肥胖”完全是脱俗的,对技术似乎已经到了一种炉火纯青的高度,总觉得技术无非 就是增、删、改........ 阅读全文

.NET实现之(自己动手写高内聚插件系统)

2011-07-12 18:00 by 南京.王清培, 2718 visits, 网摘, 收藏, 编辑
摘要:今天跟大家分享一下本人在“.NET简谈构件系统开发模式”一文中提到的软件架构设计 思路的具体实现细节。 大家看了我这篇文章后,总问我为什么要起个这么怪异的名字“构件”而不用“插件”。其实这个名字在我脑子漂浮了很久,一直找不到合适的场合用它。 在一本书上是这样解释构件的:构件是可以更换的部件,并且这个部件是由一系列很小的部件组成,同样这些小的部件由更小的部件组成;我为什么要区分插件与构 件主要原因是这两个名字所表达的思想不同。插件是可插、可卸的过程,没有强调无限极的递归实现子插件的意思,所以本人将其区分开来;当然也可以将这两种架 构用同一名词描述,其实是大同小异了。下面我给大家带来怎么用这种设计思路来开发具体的系统。[王清培版权所有,转载请给出署名] 一:问题分析 阅读全文

.NET简谈——跨进高级编程门槛的必经之路

2011-07-08 17:14 by 南京.王清培, 3317 visits, 网摘, 收藏, 编辑
摘要:我们继续C#基础知识的学习,这篇文章对前面基础知识学习的朋友有着举足轻重的作用;为了延续基础知识学习的热情,我编写了这篇特殊的文章。 本篇文章的中心是想借“.NET简谈反射(动态调用)”一文继续发挥下去,让朋友能一气呵成,到底反射能用在什么地方,究竟能起到多么高级的作用。 下面我就拿具体的例子讲解,不废话了请随我来; 1:必须具备的基础知识 C#接口:要想用反射进行高深的使用,必须先具备接口方面的基础,只有用接口了才能是系统真真的活起来。参考.NET简谈接口 一文; C#委托、事件:在动态调用的过 阅读全文

.NET简谈反射(动态调用)

2011-07-08 14:41 by 南京.王清培, 2170 visits, 网摘, 收藏, 编辑
摘要:我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员 的关键性的一步。 有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象的分层架构或者说是复杂的设计模式均是建立在 这些基础之上的,比如我们要进行模块化、组件化开发,要严格的消除模块之间的耦合,要进行动态接口调用。这样的强大而灵活的系统开发,必须要用反射才行; 任何技术都有它存在的价值和意义,只要我们把它用在合适的位置就能发挥出惊人的力量;能尽可能的减少我们编写的代码,更能是我们的代码便的清晰简洁; 下面我们就来学习C#中的反射的概念以及怎么使用它,用它能为我们提供什么样的好处,更重要的是能否将我们的技术台阶提升一个高度; 阅读全文

.NET简谈特性(代码属性)

2011-07-07 19:23 by 南京.王清培, 1688 visits, 网摘, 收藏, 编辑
摘要:由于很久没有写关于基础知识的东西了,今天来总结一下关于.NET平台中的代码属性的 概念;只是基础介绍,文章的本意是带领初学者学会使用特性,而不是讨论高深的底层技术;[王清培版权所有,转载请给出署名] 1.什么叫特性Attribute 特性对一般.NET编程人员来说并不陌生,自从我们开始接触C#语言的时候,我们多多少少已经接触了关于特性的使用;但是对于初学者来说真的不明白特性的 意义,特性到底是属于类还是类实例,这些概念搞不清楚对理解代码的逻辑真的很顺利;这篇文章我将带您来了解特性的作用,其实特性的真的很方便;至少我认为 自从我懂特性之后,我的代码便的更加的人性化,程序的结构清晰易懂,所以本人在写代码的时候经常喜欢用一些能够简单明了的表达对象的特点的风格; 其实特性Attribute就是一段代码..... 阅读全文

.NET简谈互操作(七:数据封送之介绍)

2011-07-05 13:15 by 南京.王清培, 1467 visits, 网摘, 收藏, 编辑
摘要:我们继续.NET互操作学习。互操作的基础知识已经差不多完了,当然一篇小小的文章很 难全面的讲述互操作的方方面面,本人只是总结出关键的地方好让我们能入个门,在后期如果想要更深入的学习,肯定需要一本详细而全面的书籍才行。想要精 通.NET互操作当然也少不了对非托管的技术学习,C++、COM等等,只有既熟悉.NET也熟悉非托管技术才能将互操作融会贯通。从这篇文章起我们将进 入到.NET互操作的数据封送阶段,数据封送是.NET/Pinvoke关键的部分,任何托管代码想要和非托管代码互操作,少不了数据的传递返回.. 阅读全文

每个软件企业是否应该有属于自己的开发平台

2011-07-04 18:34 by 南京.王清培, 2372 visits, 网摘, 收藏, 编辑
摘要:由于本人最近一段时间一直在忙着跟企业开发平台相关的事情,所以有感而发一下;主要是 想跟大家探讨一下企业是否需要有自己的开发平台; 我们作为.NET程序员,基本上开发的都是一些业务信息系统,都是某个应用行业的应用系统多,所以在下曾想过开发一套目前本公司能用的系统开发平台; 其实本人认为有这个必要,我大概说一下我的看法,也好给大家提个思考的方向;[王清培版权所有,转载请给出署名] 本公司是从事医药行业的信息系统开发,一些大的业务模型基本上已经固定,很少有改动;所以本人想是否能将主要的业务逻辑抽象出来进行封装;再加上我们公司 的人员流动比较快,新来的员工对业务的不熟很难上手开发,所以公司经常组织新员工的培训,但是效果还不明显;公司的业务系统所处理的都是全国所有的药品交 易数据,所以数据非常重要不能出现任何的小差错;但是还是有因为业务逻辑的不熟导致程序出现错误; 阅读全文

.NET简谈互操作(六:基础知识之提升平台调用性能)

2011-07-02 22:38 by 南京.王清培, 1132 visits, 网摘, 收藏, 编辑
摘要:我们继续.NET互操作学习。本篇文章我们将来学习互操作基础知识中的最后一个知识点 “提升平台调用的性能”; 在于非托管函数进行互操作的过程中,由于涉及的技术因数众多,因此程序的性能会受到这些因素的影响导致性能下降,本篇文章将来介绍在平台调用过程中提升性 能的一些设计和编码方面的技巧;[王清培版权所有,转载请给出署名] 一:显示的制定要调用的非托管函数名称 我们在进行平台调用的时候,如果CLR无法在非托管DLL中找到与DllImport特性指定的函数名相同的非托管函数,那么CLR会尝试采用一些规则重 新进行搜索。比如我们将sumA非托管函数的CharSet申明为CharSet.Ansi,那么CLR首先会通过根函数名(sum)进行搜索,如果在指 定的非托管DLL中找到了此函数,就是用它。如果不能找到,就会使用带后缀A的函数(sumA)进..... 阅读全文

你可能感兴趣的:(设计模式)