分析模式---建模原则

建模原则:()

1。设计一个模型时应使该模型最频繁修改的部分所影响的类型数量达到最少。

2。只要为一个拥有超类型的类型定义了特征,就应该考虑将这些特征放在该超类型上是否有意义。

3。将模型清晰地分解成操作级和知识级

4。当多个属性与可能会在几个类型中使用的行为相关时,就把这些属性组合成新的基础类型。

5。操作级中的对象会经常发生变化,它的配置由很少发生变化的知识级来约束。

6。如果某个类型拥有多种的关联,可以为这些关联对象定义一个新的类型,并建立一个知识类型来区分它们。

7。要记录一个值的变更历史,可以为这个值设立一个账目。

8。在使用账目进要遵守守恒原理:需要清算的物品不能凭空生成和消失,它仅仅是从一个地方转移到另一个地方,这使得发现和防止不守恒变得容易。

9。当可以提供不止一个的等价特征集合时,就挑选领域专家最满意的一种方法。如果领域专家感到两种方法都有价值,那么就都显示,并且把其中一个标记为派生的。

10。把一个特征标记为派生是对接口的一种约束,但不会影响基础的数据结构。

11。如果一组对象可以用不同的标准来组织,就应当使用合同夹。

12。当把一个过程看作类型的一个特征时,应该把这个过程提供一个抽象的接口,使得实现能轻松地通过子类化而改变,一个通过硬编码得到的实现是一个子类,不同的参数驱动方法是其他的子类。

13。当多重属性和一个可能在几个类型中使用的行为进行交互时,属性应该被结合成一个新的基本类型。

14。如果超类的适用领域狭窄而子类的适用领域广泛,就不应该使用泛化。

15。如果两个相似类型的差异经常被忽略,那么一个抽象超类型就可以被使用,如果它们之间的差异通常是很重要的,那么一个抽象的超类就不应该被使用。

16。如果一个抽象类型从不需要客户花费更多的努力来使用,那么它就应该被提供。

17。场景应该在价格或汇率的组合需要被看作一个整体的时候使用。

18。当信息可以从一个信息源检索或者可以从其它可用的数据计算时,应当提供一个抽象的接口而源和计算各为一个子类。

19。日期计算经常受到需要跳过的假日的影响,不同国家之间的假日通常是不同的,甚至不同商业机构也有自己的假日。

20。派生标志应该被用来定义从模型中其它结构中派生的术语。

21。当面对可选择的方法时,首先要选择最简单的,并且当需要时改为更复杂的方法。

22。当可选择的模型之间的选择余地很少时,听领域专家的直觉。

23。只有当所有的超类型的特征适合超类型并且从概念上讲每一个子类型的实例是一个超类型的实例有意义时才应该使用子类型化。

24。当客户眼中的一个交易在交易人眼中是多个交易时,都可以使用产品/合同这种划分。

产品和合同之间关键区别是产品描述客户的目的而合同涉及对方团体和主要团体之间的交易实际上得到了什么。

25。不要复制有相同内涵的基础关联,遵循这个原则导致责任分明的类型。

26。在责任分配中保持一致。提防一种类型有时对某事负责而有时又将这个责任委托给别的类型(这种行为可以胆正确的,但它总是值得怀疑)

27。关于状态图的泛化结果不能被很好地理解,确保关于超类型的所有事件可以由子类型来操作是很重要的。任何可被子类型化的状态图必须允许未知的事件。

28。单向关联和双向关联之间的决定是减少相关开发者的工作(通过减少类型间的耦合)和为类型的使用者提供方法之间的折衷。

29。如果一个包只需要对另一个包的一部分可见性,那么考虑将后面的包分成两个相互可见的包。

30。如果你遇到一个难以建模的重复情况,可以定义一个符号。然而,我们只有当造成的简化性超过了记忆额外符号的困难时才会定义一个符号。

猜你喜欢

转载自zhongzhihua.iteye.com/blog/668175