• 条款38:通过复合塑模出has-a 关系或 is-impemented-in-terms-of关系


    1、什么是复合?

    复合是类型之间的一种关系,当某种类型的对象包含其它类型对象时,便是这种关系。

    2、复合描述的关系的细分

    (1)复合意味着两种关系
    • has-a 关系
    • is-impemented-in-terms-of关系
    (2)细分依据

    区分这两种关系的依据:根据程序处理的不同领域。

    (3)应用域和实现域
    • 应用域:客观的,描述现实世界的东西的类。(比如:一辆汽车,一条狗)。应用域类型之间的复合,描述的是has-a关系。
    • 实现域:人造的,描述实现细节的东西的类。(比如:缓冲区、互斥器、查找树)。实现域之间的复合,描述的是is-impemented-in-terms-of关系。

    3、在设计类时区分is-ahas-ais-impemented-in-terms-of的关系。

    (1)is-ahas-a 关系
    • is-ahas-a关系比较容易区分。
    (2)is-ais-impemented-in-terms-of关系的区分
    • 在设计类时,是设计成is-a关系,还是设计成is-impemented-in-terms-of关系,要搞清楚类基类的行为是否完全适用于派生类,如果是,那么两个类之间就是is-a关系,即public继承。
    • 如果基类的行为并不完全适用于派生类,那么,可能就要考虑is-impemented-in-terms-of关系,即复合关系。让需要的实现类,包含一个已经实现的类对象,这个对象帮助实现需要的实现类。
  • 相关阅读:
    Unity PhysicsScene测试
    游戏编程精粹学习
    Unity StreamingMipmaps 简单测试
    稀疏贴图 SparseTexture
    前端工程师是怎样一种职业
    web资源预加载-生产环境实践
    2019年终总结——三十而立
    一种前端灰度发布方案
    2018年终总结——越过山丘
    记录一个前端bug的解决过程
  • 原文地址:https://www.cnblogs.com/lasnitch/p/12764186.html
Copyright © 2020-2023  润新知