![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Design Pattern
明天好,会的
敢于挑战,追求卓越 -- 我在软件开发方面拥有丰富的经验,熟悉多种编程语言和开发框架。我可以开发各种类型的应用程序,包括网页应用、移动应用以及桌面应用。无论是前端开发、后端开发还是数据库管理,我都能胜任。 作为一个独立开发者,我渴望能够将我的技能和创造力应用于各种令人兴奋的项目中。我相信自己具备了丰富的技术知识和灵活的思维,能够为合作伙伴带来独特而有价值的解决方案
展开
-
Abstract Factory设计模式的一些思考
Abstract Factory实际上强调两个概念: Abstract:强调接口 Factory:强调创建 我认为Factory概念尤为重要,这个概念的背后隐含了另外一层意义:创建可以被控制,这就意味着可以将Factory对象的控制权交给其它对象,从而实现低耦合度。当我们创建Factory对象时,我们可以不用担心Factory对象制造出来的对象如何去使用,因此原创 2007-03-15 14:53:00 · 841 阅读 · 0 评论 -
关于Anonymous Delegate与Lambda Expression的趣事
原文:Fun with Anonymous Delegates & Lambda Expressions在上周进行的.Net Framework基础定制课程教授过程中,我展示了代理(delegate)语法,这一历史性的一步。正如我曾经说过的一样,根据学生们已经知道的内容来解释新的内容是相当的有效。在我的学生中,大多数在1.x平台上,对代理的语法都有一些经验,因此,在案例分析中,我用一个对Arr翻译 2009-02-15 19:59:00 · 1457 阅读 · 1 评论 -
关于White框架在项目中的使用分析
white地址:http://www.codeplex.com/white 我只能说这是一个不错的UI测试框架。这个框架的实施必须要客户认可,因为这个测试框架的实施,需要花不少的时间。我目前在思考单元测试在UI层上的适用范围,当我看完来之white的例子代码后,我发现white框架的价值观同样在这个思考范围之内。 在没有这个white框架之前,我们可以通过类似MVC的方式来部分实现界面层的测试,原创 2009-02-22 14:23:00 · 1451 阅读 · 0 评论 -
关于C# Code Analyser 的作用与下一步开发
最近在工作中,发现Code Analyser的实际作用和意义远远超出了我原来对它的功能需求。分析函数的调用关系功能不仅仅帮助我们分析出函数调用的业务逻辑,还可以帮助我们判断程序的控制流是否合理,而对控制流的合理分布本身就是程序设计中的一个重要部分。另外,作为项目经理,我会经常用这个工具来辅助检查项目成员签入到源代码管理器中的代码,我发现这个工具还可以很快帮助我了解成员的设计意图,并对其合理性做出判原创 2009-03-01 11:02:00 · 1086 阅读 · 0 评论 -
软件设计中的设备
最近我发现了“设备”这个XX,之所以用XX表示,是因为我现在也不能对它进行完全定位,它可能是一种概念也可能是一种理论。只是我发现当我感觉到它的存在时,以前那些让我疑惑的问题都被很轻松的解开或找到了合理的处理方法。我会在以后的日子里,用各种代码来证明它的存在及其意义。经典的三段论 我眼中的设备 Technorati 标签: 设备 更多内容,请参考我的Blog导读原创 2009-03-01 13:24:00 · 763 阅读 · 0 评论 -
看看这个Lock可不可靠
看看这个Lock可不可靠(来至于我的cnblogs:http://www.cnblogs.com/czy/)原创 2010-01-30 11:17:00 · 629 阅读 · 0 评论 -
UML的那几个图
1. 类图:用于呈现系统内部的静态结构,它可以被直接转换为代码,对于程序员尤为重要 2. 序列图:用于展示操作的实现,同时也展现了某个操作所涉及的对象(群)。这里同时也隐含地提出了“操作”定义的范围。 3. 用例图:用于展示系统外部的行为。这个图在需求分析阶段和客户沟通时必须有的东西。 4. 状态图:用以展示某一对象内部状态的变化过程 5. 活动图:一般性的流程表达。可以用于业务逻辑层面的原创 2009-12-20 02:38:00 · 827 阅读 · 0 评论 -
UML中的几个关系
这几天又看了UML,再次理了一下UML中的关系。总的来说,关系可以分为静态关系和动态关系。静态关系的特征是它可以被保存起来,而动态关系则只在代码运行时才产生。对应于代码,静态关系可以表现为对象及对象的属性,更准确一点是只对象的数据成员。而动态关系,表现为依赖,通常作为对象成员方法中的一个参数出现。原创 2009-12-29 13:21:00 · 631 阅读 · 0 评论 -
Unity 依赖注入--构造器注入
最近准备用Unity来改良系统。 做了一些小测试,拿出来与大家分享一下。 using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using Microsoft.Pr原创 2010-03-23 22:02:00 · 1038 阅读 · 0 评论 -
Form的设计原则
界面元素V用于显示数据M; 类P用于处理数据M,包含以下行为: 对M的构造 对M的有效性验证 界面元素V中的用户事件只能作用于P Form作为界面元素V的容器,只能作用于P,而不是V。 最近在学习SmartClient,正在逐步将其应用于系统开发中。很多情况下不能够直接使用smartclient提供的框架,但是其中的思想还是值得借鉴。 希望各位多多指教。原创 2010-04-24 16:03:00 · 1018 阅读 · 0 评论 -
LINQ TO SQL:至始至终都是对象
原文:LINQ TO SQL: OBJECTS ALL THE WAY DOWNAuthor:Matt Warren 关于LINQ to SQL是什么或不是什么,目前有很多说法。其中有一些确实是基于某些人的调查研究,他们都亲手试过。作为它的构架师,我意识到我是最了解幕后原理的人,然而这并不能让我成为一个无所不知的神,使我能够知道这个产品是如满足每个人的期望的。我知道它做什么,因此翻译 2009-01-30 13:39:00 · 1027 阅读 · 1 评论 -
从Microsoft Solver Foundation看微软的未来
Microsoft Solver Foundation是我在为Don翻译时发现的,也是刚刚开始了解。它被用来应对敏捷技术中的计划,调度,风险管理和决策指定。当我看到它的介绍时,我感到相当的惊讶--微软的策略。技术是基础,在这个基础之上是各种应用模型,在应用模型之上的是各种管理模型。我认为这个Microsoft Solver Foundation就是一个管理模型。而这三层也是一个价值链。我们似乎可以原创 2009-01-10 16:17:00 · 3525 阅读 · 1 评论 -
2009年的最热门技能
原文:http://www.computerworld.com/action/article.do?command=printArticleBasic&taxonomyName=Management&articleId=330106&taxonomyId=14 旧观念:将诸如编程之类的工作外包出去;新次序:有公司会考虑培养自己的开发人员和天才员工 Thomas Hoffman 报道 2008年1翻译 2009-01-03 22:46:00 · 1387 阅读 · 0 评论 -
SqlCommandBuilder的不足与进化(一)
在.Net 环境下进行数据库开发,想找一个能够自动生成Transact-SQL的组件,相信大家都会想起SqlCommandBuilder类。它能够用户对Dataset中数据的修改,生成针对单个表的Transact-SQL语句,从而省去开发者要写一大堆Transact-SQL的麻烦。这种类似的操作在以往的ADO中也存在,只是在ADO.NET下,这种操作的耦合度降低了。但是在后面的论述中我会给你原创 2007-03-29 11:45:00 · 2876 阅读 · 2 评论 -
单元测试的过渡解决方案
要想将已有的代码进行单元测试,是一件不容易的事情。在最近的单元测试编写过程中,我发现以前写的那些代码,有很大一部分是不具备单元测试的。更然我头疼的是,要想在那些代码中引入单元测试,紧接着的不是思考如何写单元测试,而是思考如何重构代码,使其可以被单元测试。但是完成对已有系统的重构,哪里是一两天就可以完成的,特别是那种业务逻辑密集的模块,更是需要花一整块不间断的时间,使你想花零星的时间来进行代码重构成原创 2008-02-23 23:16:00 · 850 阅读 · 0 评论 -
我所推崇的编程方式:协议编程
今天我突然明白了我所推崇的编程方式是什么(可能这种方式并不能解决所有的问题):协议编程。我对协议编程的思考来至于在处理界面逻辑代码时遇到的问题。例如一个窗体类,我们可以在这个窗体类的任何成员方法中,对这个窗体类中的界面元素进行任何形式的操作。这种形式对于coding scope来说是完全合理的,但对于业务逻辑来说是无协议的。我们经常会遇到这样的问题(这个问题也是我最近遇到的),在窗体类中,由于数据原创 2008-03-09 11:20:00 · 821 阅读 · 0 评论 -
关于对设计模式的一点认识
一直以来我都认为我的编程学习是不完整的,因为我从来没有真正花过时间来学习设计模式,可能在我的潜意识里,认为设计模式是编程学习中的最高阶段,所以对它的学习一直因为它那崇高而神圣的地位而不断的后延,就像那些朝圣者要跪拜几千里路之后才能见到他们的神一样,我也认为在学习设计模式之前,我也要做更多的练习。这段时间我一直在看com的实现,在不经意中,去找了一下这些实现在C#语言中留下的痕迹。这是一个有趣的过原创 2008-03-16 12:40:00 · 723 阅读 · 0 评论 -
老掉牙:成员变量与成员方法的讨论
这类问题看上去没有什么意义,但是很多bug都在此繁殖旺盛。我认为成员变量的一个存在的意义是为了保存成员方法之间的状态,也就是说,成员变量使成员方法耦合在一起。但是,对于类来说,要尽量减少对状态的维护,维护的状态越多,维护它的复杂度就会呈几何集数陡增,所以我曾经也写过一篇文章讨论通过参数列表来限制成员变量的作用范围。如果成员变量通过参数传递,使得成员方法不直接依赖于成员变量,那么应该当机立断,将这原创 2008-01-07 21:55:00 · 1024 阅读 · 0 评论 -
单元测试编写体会
今天尝到了单元测试的甜头,以前对单元测试有偏见,觉得它是代码编写工作中的负担,现在看来,我应该呈清一下。首先,单元测试不是业务逻辑测试,它的测试对象应该是(但不限于)一个很简单的功能。说道简单功能,我想我有必要再深入一下我这里指的简单功能到底是什么。我们可以分析一下我们写过的代码,不难发现我们的代码可以大致分为(但不限于)两种:一种为业务逻辑代码;一种为和业务逻辑完全没有关系的功能代码。例如:计原创 2008-01-12 21:59:00 · 1382 阅读 · 0 评论 -
代码写法讨论:链式处理
这是我在做加班项目时,偶然发现的一种写法,个人觉得不错,拿出来和大家讨论一下int questionAnswerKey; string reason; if (GetSelected(out questionAnswerKey,out reason) && mCtrl.QueryDelete()原创 2008-06-07 12:18:00 · 856 阅读 · 1 评论 -
应对复杂的业务逻辑
1.确定逻辑单元2.对逻辑单元做单元测试确定逻辑单元的方法有很多,说简单其道理就像我们平时整理自己的屋子,只要将各种东西分门别类的放整齐就可以了;说复杂的,大家可以看看现在市面上的各种设计模式,它们又像一把梳子,帮助我们将杂乱无章的业务逻辑理顺。事实上,不管你怎么写,你的代码是由逻辑单元组成的,因为你的代码的确是在描述业务逻辑,就算是只有一个逻辑单元存在。然而事情并没有那么简单,逻辑单原创 2008-10-16 00:25:00 · 2567 阅读 · 0 评论 -
Cache 设计概要
Cache设计需要考虑以下问题 1. Cache的数据同步问题 2. Cache的更新问题 对于数据同步,必须考虑多线程相关技术,要点有 1. lock关键字 2. ReaderWriterLock/ReaderWriterLockSlim 3. InterLocked 4. Mutex 5. Monitor 对于数据更新,要考虑以下问题 1. 自动更新(包括:有效期的使用)原创 2010-05-04 16:00:00 · 803 阅读 · 0 评论