建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
2016-09-09 14:12
274 查看
建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”。那么,什么东西算得上是一个对象呢?对象有属性、有行为。以动物为例,比如猫(Cat)。Cat可以有Name,这就是属性;Cat有一个恶习ScratchSofa(挠沙发),这就是行为。我们把这些属性和行为结合起来,就称为一个类型:
当然,类型只是规范了某类对象,它提炼出了接口、规范了协议,而真正的对象是要生产出来的。比如Tom猫,必须生产(即new)出来,才会在现实世界(可以理解为CLR运行时)中真正存在(即分配内存)。代码如下:
软件中的任何“东西”都可以用这个思路去理解。
当我们编码时,将CLR当成一个现实世界,并时刻考虑将某些具有共同属性和行为的对象抽象成一个个类型,这时我们就迈出了面向对象的第一步。
现实生活中的对象可以归类,这往往是一种树形结构。我们将生物归纳为动物和植物。
CLR中的对象也是与之相同的道理,以WinForm中的窗体为例,我们将系统中的窗体分为后台管理窗体和报表前台窗体。
在编码过程中,我们将类型用包(文件夹)管理起来,就有了“命名空间”的概念。命名空间中的每一个节点,如“后台管理窗体”,就代表一个分类。在该节点下,是属性和行为比较近的一组类型。如果不将类型分组分类,混乱马上就会出现。当然,在敏捷开发中不要求一开始就将所有的类型或命名空间都定义出来,随着每一次迭代的进行,可以通过重构将类型的组织结构整合得更加合理。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”。那么,什么东西算得上是一个对象呢?对象有属性、有行为。以动物为例,比如猫(Cat)。Cat可以有Name,这就是属性;Cat有一个恶习ScratchSofa(挠沙发),这就是行为。我们把这些属性和行为结合起来,就称为一个类型:
class Cat { public string Name { get; set; } public void ScratchSofa() { Console.WriteLine("{0}在挠沙发",Name); } }
当然,类型只是规范了某类对象,它提炼出了接口、规范了协议,而真正的对象是要生产出来的。比如Tom猫,必须生产(即new)出来,才会在现实世界(可以理解为CLR运行时)中真正存在(即分配内存)。代码如下:
Cat tom =new Cat(); tom.Name = "Tom"; tom.ScratchSofa();
软件中的任何“东西”都可以用这个思路去理解。
当我们编码时,将CLR当成一个现实世界,并时刻考虑将某些具有共同属性和行为的对象抽象成一个个类型,这时我们就迈出了面向对象的第一步。
现实生活中的对象可以归类,这往往是一种树形结构。我们将生物归纳为动物和植物。
CLR中的对象也是与之相同的道理,以WinForm中的窗体为例,我们将系统中的窗体分为后台管理窗体和报表前台窗体。
在编码过程中,我们将类型用包(文件夹)管理起来,就有了“命名空间”的概念。命名空间中的每一个节点,如“后台管理窗体”,就代表一个分类。在该节点下,是属性和行为比较近的一组类型。如果不将类型分组分类,混乱马上就会出现。当然,在敏捷开发中不要求一开始就将所有的类型或命名空间都定义出来,随着每一次迭代的进行,可以通过重构将类型的组织结构整合得更加合理。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
相关文章推荐
- 编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
- 用dom解读xml的时候,如果碰到有命名空间的时候(就是节点名字有:的时候)需要把xml文件中的那个命名空间地址和名字拿出来加到XmlNamespaceManager 里面去
- 进入面向对象的世界:类就是代码,对象是内存。
- 我能把整个世界都抽象成对象...
- xfire 参数对象 命名空间的问题
- javascipt自定义命名空间、静态类、实例对象
- 结合现实世界谈面向对象中的"接口"
- 抽象公共类,复用公共方法为多个对象
- Oracle对象命名空间、dbms_stats、dbms_job相关资料
- javascript面向对象之二 命名空间
- 创建内核对象的专有命名空间
- 进入面向对象的世界:类就是代码,对象是内存。
- 进入面向对象的世界:类就是代码,对象是内存。
- “现”与“象” ---------------- 抽象世界 与 现实世界 的通道
- Silverlight中自定义控件集合的xmlns命名空间关联的建议前缀
- 进入面向对象的世界:类就是代码,对象是内存。
- WSS3SDK之:WSS对象模型中的命名空间
- 解决MVC使用时Views必须引用完整的命名空间才得到对象的问题
- JS命名空间、对象封装
- UML带你从现实世界走到对象世界