代码改变世界

随笔分类 -  04 模式架构

关于设计的度的一点小认识

2010-07-29 07:50 by Virus-BeautyCode, 2574 阅读, 收藏, 编辑
摘要: 关于设计的度的一点小认识引言  最近读了《设计之道》这本pdf书,是园子的老师傅总结的,感谢他的分享。  前几天葡萄城控件团队也发表了一篇《设计做到什么程度? 》,写的不错,有一定的指导意义,不愧是大厂出来的。  正好自己今年也开始进入真正的设计领域,虽然设计的问题出来不少, 也是改来改去的,也是由于中间学习了好几关于设计本书,同时参考了好几个框架和代码示例。发现大家在这方面还是各有认识,没有绝对... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(七)

2010-07-27 07:18 by Virus-BeautyCode, 1706 阅读, 收藏, 编辑
摘要: 解决实际中的大问题solvingreally big problems     引言 时候构建一些真实的大东西了。你准备好了吗?are you ready?你已经掌握了一系列的OOA&D工具,但是在现实环境中构造一个大系统的时候,如何使用它们呢?好吧,你可能还没有认识到,但是你已经具备了构造大系统的一切条件。接下来,你将会学习一些新的工具,例如:领域分析和用例图,但是这些新工具是你以前学习... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(六)

2010-07-26 07:18 by Virus-BeautyCode, 2079 阅读, 收藏, 编辑
摘要: 好的设计产生灵活的软件-下(good design = flexible software part 2)------------give your software a 30-minute workout引言  如果你在对应用进行修改的时候发现问题,很有可能说明你的软件需要更加灵活和富有弹性。你需要做更多的分析,整体的设计,学习可以使系统更加松耦合的OO原则。在最后,你将会看到提高内聚性如何帮助... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(五)

2010-07-24 19:35 by Virus-BeautyCode, 1956 阅读, 收藏, 编辑
摘要: 好的设计产生灵活的软件-上(good design = flexible software part 1)------------没有什么是一成不变的nothing ever stays the same引言  变化是不可避免的。无论现在你多么喜欢你的软件,明天还是可能会改变。你把软件开发的越难以改变,相应用户的需求变更就越困难。在本篇中我们将会视图改进一个已有的系统,看看多么小的一个改变能导致大... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(四)

2010-07-23 23:38 by Virus-BeautyCode, 1686 阅读, 收藏, 编辑
摘要: 用真实世界检验你的软件-分析引用 是时候毕业了,时候去真实世界检验自己的软件了。 上个版本的狗门很是成功,卖的很疯狂。但是越是卖的还要,抱怨就会越多。下面就是一个用户的意见。 “我非常喜欢你的系统,那个语音识别器。但是在我安装了之后,每次邻居家的狗叫的话,门也会自动打开。但是这不是我想要的效果。”正文 你的软件有了一个上下文。到目前为止,我们是在一个真空,没有结合软件运行... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(三)

2010-07-23 05:57 by Virus-BeautyCode, 2363 阅读, 收藏, 编辑
摘要: 引言 今天我们说一下需求变更,也就是需求变化了。。。。。。。。。。。。。。。。。。  这恐怕是我们最头疼的了。   正文 接着上回说,因为开发了一个狗门,使得我们可以舒服一阵子了。这时候,电话来了。一个客户打来电话说:“你们的狗门工作的很好,很不错,只是我们想要有一点变化。我们需要一直听小狗是否叫了,是否需要出去。可是有时候我们会听不见,小狗就会尿在家里。能否让门在小狗叫的时候自动... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(二)

2010-07-20 07:18 by Virus-BeautyCode, 2686 阅读, 收藏, 编辑
摘要: 今天的话题是收集需求。  Gathering Requirements  每个人都喜欢满意的客户。我们已经知道做一个好的软件的第一步是确保软件做了客户想要做的事情。但是你如何理解客户到底想要什么呢?如何确保客户知道他们自己想要什么呢?  个人认知:  个人觉得有时候用户也不太确定他们想要系统做什么具体的功能,也就是说他们也提不出来什么需求。但是他们有问题要解决,他们上系统的目的是解决问题。他们可以... 阅读全文

Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(一)

2010-07-18 21:47 by Virus-BeautyCode, 3756 阅读, 收藏, 编辑
摘要: 题外话  又是一本Head.First系列的书,这个系列很多,包括:SQL、设计模式、C#、面向对象分析与设计、软件开发等。里面的语言生动活泼,很好的以故事的形式引出正文,而不是枯燥的文字。  书中开篇的建议  1、放慢速度。理解的越多,需要记忆的越少。  不要只是读,要停下来思考。当书中出现一个问题的时候,不要着急浏览答案,假设真的有人问你这个问题。你强迫你的大脑思考的越深,越是你学习和记忆的好... 阅读全文

《深入浅出设计模式-中文版》读书笔记-工厂模式(五)

2010-07-16 12:46 by Virus-BeautyCode, 3083 阅读, 收藏, 编辑
摘要: 今天给大家带来的是:工厂模式。  我们在代码中创建一个对象,我们会很自然的想到new。其实,除了new意外,我们还有很多的方式可以创建对象。不说复杂的模式,就说简单的语法,其实.NET框架中还有下面的方法。根据需要创建的对象的类型,动态创建对象。  [代码]  通过前面我们已经讲过一条原则:  针对接口编程,不针对实现编程。  使用new创建对象很明显就是一个针对实现编程,new后面需要一个具体的... 阅读全文

系统内部模块(子系统)之间的耦合以及模块(子系统)划分

2010-07-14 13:02 by Virus-BeautyCode, 8343 阅读, 收藏, 编辑
摘要: 题外话  最近已经在努力学习了,学习基本功,学习设计模式,学习成熟框架,学习软件架构。发现越是学习的多,越是发现自己知道的少。    引言  本篇中的系统使用的技术背景是:.NET平台,C#语言,数据库是SQL Server,其他平台没有参与过,所以没有验证过。  简写解释  BA,Business Access,业务访问  DA,Data Access,数据访问  Entity,实体  Serv... 阅读全文

自定义ORM系列(一)利用attribute实现简单的reader=>entity和reader=>List<entity>映射

2010-07-09 15:27 by Virus-BeautyCode, 3808 阅读, 收藏, 编辑
摘要: 我不知道NH的ORM具体如何实现的,我的想法就是通过字段名称和属性名称的对应关系来实现赋值。  简单的类型比较好做,直接赋值就可以了。简单类型是说int,string之类的。  有几个需要注意的地方:  1 属性的类型是另外一个类  2 属性是一个集合  3 类有两个属性的类型是同一个类,例如:种子有用量及其单位,和产量及其单位,用量的单位和产量的单位是一个类型  4 属性嵌套,就是属性的这个类型里面的属性还可能是另外一个类    解决办法:  1 用不同的attribute,普通的类型直接赋值,另外一个类的话就交给另外一个类去负责具体的映射  2 分两次映射,然后集合赋值给商品的属性,觉得不 阅读全文

《深入浅出设计模式-中文版》读书笔记-观察者模式(四)

2010-07-06 06:34 by Virus-BeautyCode, 2519 阅读, 收藏, 编辑
摘要: 今天要接触的是观察者模式Observer。  提到观察者,肯定会想到还应该有被观察者,也就是观察的内容,或者说是观察的主题。  首先让我们看看报纸和杂志的订阅是怎么回事:  报社的业务就是出版报纸。  向一家报社订阅报纸,只要有新报纸,就会给你送过来。只要你是他们的订阅者,就一直会收到。  当你不想继续看报纸的时候,可以取消订阅,他们就不会再送报纸过来。  只要报社存在,就会一直有人订阅或者是取消... 阅读全文

《深入浅出设计模式-中文版》读书笔记-继承与组合(三)

2010-07-03 16:53 by Virus-BeautyCode, 2195 阅读, 收藏, 编辑
摘要: 经过上一次的改造,鸭子类不是靠继承行为接口而拥有行为,而是靠调用者指定行为的方式。例如:指定叫声的形式和飞的形式。保留了灵活性,将权利交给调用者,鸭子本身不再负责行为的初始化。具体的行为表现交给指定的行为方式处理。如果需要有新的行为方式定义,只要实现行为的接口,然后给鸭子指定新定义的行为方式即可。  就像上一回的例子中,将几个类结合起来使用,这就是组合composition。这种做法和“... 阅读全文

《深入浅出设计模式-中文版》读书笔记 策略模式(二)

2010-07-02 07:25 by Virus-BeautyCode, 2445 阅读, 收藏, 编辑
摘要: 接着上回的“针对接口编程,不针对实现编程”原则说。  假设开始我们设计了一个鸭子基类,发声、游泳和显示外观是鸭子类的功能。发声和游泳是通用的方法,放在基类实现,显示外观由于鸭子的不同而不同,放在继承类实现。可以设计出下面的类结构。  代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http... 阅读全文

《深入浅出设计模式-中文版》读书笔记 开篇乱弹(一)

2010-07-01 06:42 by Virus-BeautyCode, 4462 阅读, 收藏, 编辑
摘要: oreilly的《Head.First设计模式》,《深入浅出设计模式》是一本好书,用生动的语言讲解设计模式。而且是逐级深入,并没有一上来就gof23,就一大套设计模式的理论。而是用例子切入,使得读者逐步的理解设计模式的好处,理解设计模式可以解决的问题,使我们有了继续读下去的理由和勇气,而不至于被大片的理论所击倒。  更加容易入门,为以后读那些理论打下坚实的基础。  感谢作者写出一本这么好的书。  ... 阅读全文

面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle

2010-06-29 15:45 by Virus-BeautyCode, 4599 阅读, 收藏, 编辑
摘要: 引言  面向对象类设计,或者说是面向对象设计,有五大原则:  Single Responsibility Principle     单一职责原则  Open Closed Principle        开闭原则  Liskov Substitution Principle     里氏替换原则  Dependency Inversion Principle    依赖反转原则  Interf... 阅读全文

微软企业库5.0学习笔记(四十五)实战数据验证模块----高级篇

2010-06-24 19:41 by Virus-BeautyCode, 2832 阅读, 收藏, 编辑
摘要: 1、添加自定义的提示信息  验证失败的提示信息可以自定义,企业库的验证模块也提供了自定义的功能。是通过读取资源文件的设置来实现的。首先添加资源文件,在项目的右键菜单中选择【属性】,然后点击【资源】添加文件并且定义三个字符串类型的资源。      在上一章中的Customer类的attribute上多添加一些参数,引入资源的命名空间,具体如下所示,就是指明要用的资源名称和类型。  代码 Code h... 阅读全文

微软企业库5.0学习笔记(四十四)实战数据验证模块

2010-06-23 19:22 by Virus-BeautyCode, 2518 阅读, 收藏, 编辑
摘要: 1 在业务对象上添加验证  添加对程序集【Microsoft.Practices.EnterpriseLibrary.Validation.dll】和【System.ComponentModel.DataAnnotations】的引用。  using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;  定义下面的对象  代码C... 阅读全文

微软企业库5.0学习笔记(四十三)数据验证模块

2010-06-19 08:07 by Virus-BeautyCode, 3565 阅读, 收藏, 编辑
摘要: 概况  任何接受用户或者是其他系统输入的应用,一定要确保信息是合法的,符合特定的规则。例如:在处理一个订单的时候,需要检查客户的电话号码一定要是数字。另外,如果验证失败,需要返回表明错误的信息。  企业库的验证模块允许开发者实现结构化的,易维护的验证方案。另外,验证模块允许在下面的技术中使用:  ASP.NET  Windows Communication Foundation(WCF)  Win... 阅读全文

NET 应用架构指导 V2 学习笔记(二十四) 跨层关注问题

2010-06-17 20:00 by Virus-BeautyCode, 2228 阅读, 收藏, 编辑
摘要: 概况  大部分的应用都会包含一些跨越逻辑层和物理层的通用功能。这些功能包括:用户认证、授权、缓存、通信、异常管理、日志、基础框架和合法性验证。这些功能通常被叫做“跨层关注”,因为它会影响整个应用,应该尽可能将他们的代码集中在一起。如果这类代码散落在各个地方,需要修改的时候,就需要打开每个地方进行修改;如果集中管理的话,只需要打开一个地方,修改一个地方就可以了。  通常的设计... 阅读全文