0

ここに設計上の問題があります。私は3つのクラスを持っています。

- お父さん

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "Persona", schema = "dbo", catalog = "cxc")
Class Person

子供の

Class User extends Person
Class Customer extends Person

顧客はアプリケーションにアクセスして不動産アカウントを表示し、支払いを行うことができるため、この設計がアプリケーションに適しているかどうかは疑問です.

また、顧客が同時にユーザーであることができず、データの整合性を維持できない場合 (実生活では 1 人しかいないため) が可能かどうかはわかりません。

前もって感謝します

4

4 に答える 4

0

あなたの説明から: de customer can acces to the aplicacation to view the estate acount, and make payments. とはお客様が持つ特権であり、お客様自体view the estate acount一種の役割のように思えます。make payments

そもそもなぜそれをCustomerUserにモデル化する必要があるのか​​ わかりません。アプリケーションの背景がここで役立つかもしれません。

于 2013-06-24T05:53:33.377 に答える
0

おそらく、代わりに Customer をインターフェイスにする必要があり、User は Customer を実装できます。これにより、ユーザーをユーザーや顧客のように振る舞わせることができます (あなたが正しく理解している場合)。顧客の部分だけに制限したい場合は、次のようなインターフェイスを介してオブジェクトを参照するだけです。

Customer customer = (Customer)/* the user object. */

これは、ユーザーのクラス定義が次のようになることを意味します。

class User extends Person implements Customer {
于 2013-06-21T18:55:49.300 に答える
0

Java では、単一の継承のみが許可されます。

デザインについて私がすることは次のとおりです。

クラス User extends Person

次に、 CustomerUserとどの程度異なるかに応じて、Customer クラスをスキップし、User クラスにユーザー タイプの追加プロパティを追加できます。たとえば、列挙型にすることができます。

enum UserType {
  Customer,
  User,
  Boss,
  // etc...
}

ただし、顧客の背後に大きなビジネス ロジックがあり、それがユーザーと顧客の明確な違いでなければならない場合、設計に問題はありません。

于 2013-06-21T19:53:38.423 に答える