我现在正在设计一个软件,它有几个层次的抽象。这可能是我开始设计的最复杂的代码片段,而且它需要易于升级,所以我想在开始编写任何代码之前确保自己走在正确的轨道上。
从本质上讲,将有3个主要级别的类。这两个类需要相互交谈。
第一个是输入源数据。这些类的主要目标是从两个不同的源获取数据,并将其转换为公共接口,以便在程序的其余部分中使用。
第二组将是外部库的适配器。该库已定期更新,我没有理由怀疑它不会在这些年中继续更新。最有可能的是,每次升级都将与上一次非常相似,但可能会有一些小的变化来支持新的库版本。这一层将负责获取输入,并对它们进行格式化以供输出类使用。
最后一个类是输出。我不认为这需要多个版本,但至少需要指定两个不同的输出目录。我想最简单的做法就是在创建输出类时传入一个输出目录,这是唯一需要的抽象级别。
发布于 2012-12-28 14:58:54
按如下方式设置代码,本质上遵循bridge pattern,但具有多个抽象层。
输入类将是抽象类。目前获取输出的两种不同方法是两个不同的具体类,如果需要,可以添加更多的具体类。
包装器类将是一个factory pattern。大多数代码在不同的实现之间应该是通用的,所以这应该可以很好地处理细微的差异。
输出类将作为implementor类的一部分包含在内。没有真正需要的模式,因为这个类只需要一个版本。而且,实现者很可能是一个单例。
https://stackoverflow.com/questions/14071402
复制