ADT
Posted l160300101
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADT相关的知识,希望对你有一定的参考价值。
这?列出了?个能够表达ADT思想的词:
- 抽象: 忽略底层的细节?在?层思考
- 模块化:将系统分为?个模块,每个模块可以单独的进?设计、实现、测试、推倒,并且在剩下的开发中进 ?复?。
- 封装:在模块的外部建?起?道“围墙”,使它只对??内部的?为负责,并且系统别处的bug不会影响到它内 部的正确性。
- 信息隐藏:将模块的实现细节隐藏,使未来更改模块内部时不必改变外部代码。
- 功能分离:?个模块仅仅负责?个特性/功能,?不是将?个特性运?在很多模块上或?个模块拥有很多特性。
抽象数据类型(ADT)是通过它们对应的操作区分的。
- 操作可以分类为创建者、?产者、观察者、改造者。
- creator 创作该类型的新对象,creator可以将对象作为参数,但不是正在构建类型的对象
- producer 从该类型旧对象中产生新对象,String的Concat方法是一个producer
- observers 采用ADT对象并返回不同类型 eg:List中的Size()
- Mututors 改变对象 eg:List中的add()
- ADT的标识由它的操作集合和规格说明组成。
- ?个好的ADT应该是简单,逻辑明确并且表?独?的。
- 对于ADT的测试应该对每?个操作进?测试,并同时利?到创建者、?产者、观察者、改造者。
设计?个抽象类型包括选择合适的操作以及它们对应的?为。
- 设计少量,简单,可以组合实现强?功能的操作??设计很多复杂的操作。
- 每个操作都应该有?个被明确定义的?的,并且应该设计为对不同的数据结构有?致的?为,?不是针对某些特殊情况。
- 操作集合应该充分地考虑到?户的需求,也就是说,?户可以?这个操作集合做他们可能想做的计算。
- 抽象类型可以是通?的:例如,列表、集合,或者图。
以上是关于ADT的主要内容,如果未能解决你的问题,请参考以下文章
[Functional Programming ADT] Combine Multiple State ADT Based Redux Reducers