随笔分类 - OOA/OOD/OOP
摘要:这篇说说分类的问题。面向对象的设计从根本上就是一个选择分类的过程,而在分类的过程中,只要不出逻辑上的问题,任何分类都是正确的。所以说,对一个系统进行面向对象的建模,1000个人能建立出1000个不同的模型,但只要建立的模型中没有逻辑问题,都不能说这个建模是错的。只有对系统需求建模的适合与不适合,易扩展与不易扩展之分。而对于开发人员来说,大多数人的思维习惯都是非黑即白的思维,这大概也是真正的对象技术...
阅读全文
摘要:上面已经谈过了对象的生死问题,那么对于这个对象,来分析其在这个生命周期中的状态变化。在一个对象创建之后,它就被赋予了一个状态。按照分类的原则,生命周期中的对象可以分为状态改变和状态不改变两类。如果这个对象的状态不改变,那么可以将其定义为不变对象(immutable),比如一个网站的设定,在网站提供服务的这个周期中,这个包含了设定数据的对象就可以看成是不变对象。这个不变对象有个学术名称,叫做Valu...
阅读全文
摘要:梦话对象系列,尝试从另外一个角度去思考平时日常开发中的很多对象概念。
阅读全文
摘要:在.NET世界中三层架构已经深入人心,是否有人考虑过另外的开发模式呢?
阅读全文
摘要:由园子里近期刮起的ORM旋风,结合自己的一些实际经验,谈谈自己对ORM的理解。
阅读全文
摘要:记得以前在看关于讲面向对象的书的时候都会拿Dog和Cat来做例子。比如他们都会叫,则他们都应该有个Bark方法,然后进一步抽象到Animal这个类。然后进一步往深处讲,则会跟你谈到设计类的时候应该要关注这个类的行为,其实也就是方法了。同时它具有哪些对我们有用的字段和属性,这里我们不谈这个。但是现在在实际的操作过程中呢?我感觉很多人都是拿了一个问题之后立即开始分析里面所包含的实体类,这个实体类有哪些...
阅读全文
摘要:进入新公司之后,开发方式跟以前相比变化很大。以前公司做的项目基本上没有什么文档,只有一系列的用户需求,然后根据需求来决定该怎么做,做成怎么样。但 在这里,动手之前首先需要准备User Story,即虚拟出最终用户的操作,写成文档来决定我们应该如何做,怎么去做。 最初,我是根据User Story的定义来定义好接口,然后根据接口编写Unit Test,最后去实现然后测试。当User Story并不...
阅读全文
摘要:本文并不是告诉你如何使用NUnit进行单元测试,关于你如何进行单元测试的文章已经有很多。我这里只是说说我接触单元测试这一年半的时间自己所领悟到的一些东西,当然这只是我个人的心得,估计里面也会有错误,期待各位高手来对不对的地方进行指正。 初次接触单元测试是一年半以前参加一个工作流引擎的开发。那时我刚毕业,对于TDD的这种先写测试后写实现的方式来说还感到很陌生。同时由于公司以及人员 的关系,实现已经...
阅读全文
摘要:Properly constructed classes are designed in two parts—the interface and the implementation.Perhaps the most important issue when designing a class is identifying the audience, or users, of the class....
阅读全文
摘要:如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。
阅读全文
摘要:The Object-Oriented Thought ProcessBy Matt WeisfeldJanuary 28, 2004(From: http://www.developer.com/java/other/print.php/3304881)Introduction This is the first installment in a series of articles about...
阅读全文
摘要:对于堆(heap)和堆栈(stack),尽管说过很多次,不过一直都不是很清楚。个人认为这篇帖子说的还是比较好懂的,便翻译了过来。有些地方可能不太准确,因此后面附上了原文。堆栈用于存储临时值。当你调用一个函数时,n字节被分配到堆栈的顶层,其中n是所有局部变量的字节之和。一个用于标记自身的特殊函数所占用的区域,我们称之为堆栈帧。由于每个函数都可以调用其他函数,因此最终将会得到一连串的堆栈帧,每一个都会...
阅读全文