制作自己专属头像,淘宝seo搜索引擎原理,wordpress 去掉描述的超链接,抖音开放平台橡塑appAndy Carlson, Sharon Estepp, Martin Fowler 著#xff0c;透明 译 抽象 在面向对象设计中#xff0c;我们不断使用“对象”#xff08;object#xff09;这个词。对象不仅仅用来表现真实世界中存在的物件#xff0c;它们也被用来表现那些曾经存在但已经消失了的物件透明 译 抽象 在面向对象设计中我们不断使用“对象”object这个词。对象不仅仅用来表现真实世界中存在的物件它们也被用来表现那些曾经存在但已经消失了的物件以及那些可能存在于未来的物件。 上述的要求给我们的建模工作提出了一个特别的挑战因为如果建模者必须考虑物件随着时间的变化情况出现在某一特定时间点的对象的复杂度就会大大增加。 这篇文章将向读者介绍三个模式并通过它们向读者展示怎样通过改进对象模型来解决上述问题以及最终得到的模型怎样为那些不关心时效问题的客户提供支持。 模式一Temporal Property时效属性模式 别名历史映射Historical Mapping 环境 假设你正在建设一个复杂的信息系统其中对象的属性必须可以随时间变化而变化。另外你还需要可以跟踪
1、属性在过去怎样变化
或2、属性在未来将怎样变化
或3、以上两点。
很自然的你会让这个属性包含一系列离散值用这些离散值来表示时间间隔对属性的影响不能用这个方法来表示象温度这样可以连续变化的属性。为了实现这个系统你还可能需要使用某些数据库可能是关系数据库。 问题 在考虑“对象怎样随时间变化”时通常我们的意思是“它的属性怎样随时间变化”。这些属性property可能是变量attribute、关联relationship或者查询操作query operation。例如请考虑图1所示的模型 在这个模型中我们关心雇员的两个属性他的工资和他的技能。于是我们得到了图2所示的Employee接口 我们也不排除给Skill类提供一个相似的接口的可能性如果那样做的确有用的话。
现在我们来看看怎样让这个类体系支持变化从而让我们可以记录某雇员以前的工资和技能、可以预测未来需要的雇员的工资和技能。 正如图3所示的我们给Employee类的属性加上了Time Period时间段这个修饰。以Salary为例我们必须创建一个单独的类来保存工资值并用一个与之相关的Time Period指出这个工资值有效的时间段。 这样我们就可以允许多个Salary与同一个Employee发生联系它们拥有不同的时间段。再以Skill为例这个类的一个实例可以被许多Employee的实例共享所以有必要引入一个中间对象来保存相关的TimePeriod信息。