摘要,界面 - 何时使用什么?

时间:2016-11-30 20:42:15

标签: java interface architecture abstract-class abstract

我对Java比较陌生 - 特别是涉及到接口和抽象类(我确实知道如何使用它们),但是在这种情况下我有点困惑我应该如何设置我的架构。首先,我想说这只是一个有趣的项目 - 但当然主要目标是获得经验: - )。

让我们开始做生意!

我有一个很棒的想法,即创建一个可以买卖物品的网站。我正在考虑使用Json,jax-rs和某种数据库(可能以NoSQL / MsSQL结束。

但是,我似乎遇到了创建架构的问题,以及如何正确完成架构。

所有广告都有一些共同点(它们都应包含图片,广告文字,价格等)。这不是问题所在。问题是我不知道如何处理某些广告可能存在的所有差异......例如,“电子”类别下的广告可能与“衣服”类别下的其他广告有很多不同的字段。

我的意思是......它看起来像这样:

衣服 - >男士 - >毛衣

电子产品 - >电话 - >苹果

电子产品 - >电视 - >三星

怎么会处理那个?

想象一下以下两个广告:

AD1: 文字:我想卖掉我的电视 价格:100USD TimeCreated:今天(日期时间,等等) 类别:电子产品  子类别:电视      ScreenSize:40“      品牌:三星      型号:700UHD

AD2: 文字:我想卖掉裤子 价格:10美元 TimeCreated:今天(日期时间,等等) 类别:衣服  子类别:男士      裤子?      品牌:柴油      尺寸:32      长度:40?      条件:不好

我真的希望你能得到这个想法 - 我真的很困惑我应该如何处理这个问题。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

在开始项目架构之前,您可能想要了解设计模式。你在这里描述的是什么:

  

问题是我不知道如何处理所有的差异   某些广告可能包含...例如类别下的广告"电子产品"   可能有很多不同的字段而不是其他广告   类别"衣服" ..

Decorator pattern的主要候选人。

你可以通过抽象类或接口实现它,但我会给你另一个强大的工具来考虑:Composition

在这种情况下我可能会考虑实现单一用途Interfaces,它基于behaviourcomponent。例如,每个广告的价格合适吗?所以,我会创建一个名为Interface的{​​{1}},并有一个类实现它或另一个接口扩展它。在某种程度上,给你的班级一些行为或组件。

有很多方法可以达到你想要的目标,但是要知道你的设计模式(你知道,常见问题的测试解决方案,等等)是一个重要的起点。

答案 1 :(得分:0)

鉴于产品范围确实很大,我建议不要像问题中提到的那样为每个产品类别或品牌创建一个新类。相反,您可以拥有的只是具有某些标准属性的产品类,包含品牌和产品类别作为属性。虽然品牌,产品类别和其他很少的人本身可以成为具有附加属性的类,但是可以有其他成员来满足产品类本身中的产品ID,名称,价格,图像等其他标准字段。

对于其他非标准属性,您可以使用属性名称映射到value,以确保设计可扩展为可能具有要建模的新属性的新产品,而不必强制您每次都创建新类。

在数据库方面也是如此:您可以拥有一个包含公共属性集的产品表,然后使用扩展表来获取每个产品类别的其他属性。

我知道它没有很好的细节,但希望有足够的高水平的想法让你开始。