1

私は、お互いに依存している2つのクラスがあり、どこにあるのかという問題の設計ソリューションを探していclass Customerますclass Order:

Customerは注文のリスト (1 対 N) を持つことができOrder、指定された顧客 (1 対 1) を持ちます。

この種の依存関係を解消するためのベスト プラクティスは何ですか?

4

2 に答える 2

3

次のような依存関係があるとします。

public class Customer {
    private long customerId;
    private String name;
    private String address1;
    // ....
    private List<Order> orders;
}

public class Order {
    private long orderNumber;
    private Date orderDate;
    // ... others
    private Customer customer;
}

依存関係を壊すために 3 番目のクラスを作成できます。

public class CustomerOrder {
    private final Customer customer;
    private final List<Order> orders;
    public CustomerOrder(Customer customer) {
        super();
        this.customer = customer;
        this.orders = new ArrayList<Order>();
    }
    public void addOrder(Order order) {
        orders.add(order);
    }
    public Customer getCustomer() {
        return customer;
    }
    public List<Order> getOrders() {
        return orders;
    }
}

これで、Customer クラスから注文を削除し、Order クラスから顧客を削除できます。それとも私はあなたの問題を誤解していますか?

于 2016-02-13T16:59:28.750 に答える
-1

約 2 年間のソフトウェア エンジニアとして、私がそのようなケースで見た中で最も良いのは、1 つのクラスのシャドウ定義を配置し、何も初期化せずに、単にコンパイラに「注文が存在します」と伝え、次に他のクラスを定義することです。クラスを明示的に指定し、その後に注文クラスを明示的に指定します。それはあなたを正しい方向に導きますか?ノードとツリーはこのようにモデル化されることがあり、データ構造とアルゴリズムの分析に関する書籍には、これに対する適切な設計ソリューションが含まれている傾向があります。

于 2018-12-24T00:47:57.043 に答える