我这周一直在开发一个系统,在这个系统中,我很难平衡关注点的分离和易于扩展的特性。我在系统里增加了新的类型,感觉就像散弹枪手术。
其基本思想是从远程系统收集(轮询)数据,然后将其提供给许多不同类型的客户端。为了支持他们的接口类型(协议),我正在做大量的翻译工作。
我要试着简化这件事,这样我就可以把它装进一个试题框里。
世界上有一个带有SNMP接口的FruitService。我的出版商的工作是收集这些数据,然后发布。
最后,我创建了5个类,并编辑了8个来插入一个新类型。这不是很多工作;为一个简单的类型编写代码、测试和签入需要几个小时。请注意,在水果类型(例如:梨和椰子)中没有太多的共同性,所以大多数常见的抽象都是基于更新数据的过程,而不是数据本身。
我的设计关注点是:
因此,设计的名义目标是容易地处理这些外部变化。这导致了翻译层的所有分离。但是添加类型感觉比我想的要难。
有什么技术或例子我可以研究吗?我错过了一个主意?我是不是应用了错误的SRP,并且应该有一种会说SNNP、xml模式、DTO等的Apple类型?

编辑:
客户机#1,RMI客户端,是在添加新水果时定制编写的,以利用所有水果的功能。因此,如果我们决定从FruitService中提取香蕉信息,我们还将编写一个客户端,允许您剥香蕉皮,在香蕉成熟时得到通知,并告诉您香蕉属于哪一束--以及基本的水果属性,如大小、重量、颜色、腐烂时间等。
发布于 2010-09-10 11:03:56
我的第一印象是,您的设计需要一些重构才能更面向对象。对于不同的结构,您有不同的类型,但是行为是很重要的。如果它是可能的,而不是创造新的水果类型,描述一般的水果结构和创建对象的具体水果。通过这种方式,您可以包含描述果树中的结构的行为,并创建泛型转换类,这些类只需使用有关结构的信息来创建添加新水果类型时所需的8个对象。这也可以使用元编程来完成,但这取决于您的语言、技能和创建这样的东西所需的精力。
因此,我们的想法是将Coconut.getMilk()和Pear.getSeeds()转换为Fruit.getAttributes()等等。这个有帮助吗?
https://softwareengineering.stackexchange.com/questions/135025
复制相似问题