代码之家  ›  专栏  ›  技术社区  ›  Amit

Java—我应该使用字段还是类来解决问题,如下所示:

  •  2
  • Amit  · 技术社区  · 15 年前

    我在DB里有两张桌子

    • 加油站 (燃料站标识:int(PK),燃料站名称:varchar,燃料品牌标识:int(FK))
    • 燃料品牌 (燃料品牌标识:int(PK),燃料品牌名称:varchar)

    如我们所见,这两个表都通过链接。外键(fuel\u brand\u id)

    现在,我想设计一个与上述数据模型相对应的对象模型,但是我不知道应该使用哪种方法,因为有以下两种方法:

    • 是否只上一节课 FuelStation 并将燃料品牌储存为 String 加油站 班级。

    • 分为两类: 加油站 FuelBrand . 然后将它们与 多对一 燃料站 只有一个 但只有一个 可以有很多

    问题1。哪种方法更好?

    问题2。每种方法的优缺点是什么?


    据我所知:

    方法2的优点

    • 它使我们的对象模型更细粒度。

    方法1的优点

    3 回复  |  直到 5 年前
        1
  •  2
  •   Péter Török    15 年前
    1. 只制作一个等级加油站,并在加油站等级中以字符串形式存储燃油品牌。

    在这两种方法之间没有明确的普遍选择,因为这在很大程度上取决于上下文。一些决定因素:

    • 你们有多少个电台和牌子?如果你有
    • FuelBrand 属性更改,还是引入新属性?如果是这样的话,最好还是使用第二种方法——否则,任何 燃料品牌 将需要更改 FuelStation
    • 一个加油站将来是否可能有多个燃油品牌?这同样需要第二种方法。

    作为底线,第二种方法更灵活,所以我更希望,即使现在没有可预见的变化,这将明确要求这种设计-在软件开发中,永远不要说永不:-)

        2
  •  1
  •   mahju    15 年前

    哪一个更好取决于你想对信息做什么。

    a) 如果列出提供某个品牌的所有加油站很有意思,您可能还希望选择从FuelBrand名称到FuelStations集合的某种地图。

        3
  •  0
  •   Pete Kirkham    15 年前

    无需为每个加油站的FuelBrand创建单独的对象

    任何一种方法都有相同数量的对象-您有N个FuelBrand对象,或者N个string对象,N是品牌的数量或者站点的数量,这取决于您是否重用这些对象。所以这个论点是似是而非的。

    我倾向于用一个类来表示每个表,因为它确实明确表示品牌是一个品牌而不是另一个东西。它还迎合了同名的不同品牌,这是关系模式允许的,尽管可能性不大。

    推荐文章