MaoBisheng

Asp.Net(C#) & SQL & Oracle

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  71 随笔 :: 0 文章 :: 58 评论 :: 2 引用

"Is-a”与"Has-a"的关系。。。
"Is-a”代表类之间或类与接口的继承关系,比如猫是动物,狗也是动物,都继承了动物的共同特性,再用OO语言实现时,应将猫和狗定义成两种类,均继承动物类。
"Has-a"代表的是对象和他成员的从属关系,同一种类的对象,通过它们的属性的不同值来区别。比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字叫“张三”的人和名字叫“李四”的人分别定义成两个类,均继承“人”这个类,显然是不合理的。


装饰模式中有出现两者同时用的情况,一个类在接口上表现为is-a的继承关系,但在实现上又表现为has-a的组合关系,简要代码:

abstract class Decorator : Component//---Decorator “is-a” Component 
{
    
protected Component component;//---Decorator “has-a” Component 

    
public void SetComponent(Component component)
    {
        
this.component = component;
    }

    
public override void Operation()
    {
        
if (component != null)
        {
            component.Operation();
        }
    }
}

 

详细代码:

http://www.cnblogs.com/MaoBisheng/archive/2008/08/16/1269404.html?updated=1

作者:MaoBisheng
出处:http://maobisheng.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2008-08-31 09:02 MaoBisheng 阅读(590) 评论(1) 编辑 收藏

评论

刚好想要找这个概念看看的
此人和彼人都是人,而此人非彼人也.哈哈
 回复 引用