【问题标题】:Which mechanic would be most appropriate哪种机制最合适
【发布时间】:2020-04-21 20:08:17
【问题描述】:

我一直在努力解决以下问题。 有两个类 - 客户和购物车,通过聚合(?)相关联,即客户类在内部有一个购物车的私有字段,因此可以将购物车分配给当前客户(用户/所有者)。我想实现另一个类 - CheckOutMachine,主要任务是客户结算,然后打印账单。 问题是我想以两种不同的方式实现这一点,就像

public class Main() {
 public static void main(String[] args) {
 // creating necessary objects
 Customer customer = new Customer("James");
 Cart cart = new Cart();
 customer.setCart(cart);
 CheckOut checkOut = new CheckOut();

 // creating products, adding to the Cart
 // ...

 // customer settlement
 checkOut.checksOut(customer)
 checkOut.checksOut(cart)
 }
}

所以两个完全不同的对象作为单一方法的参数。 我正在寻找一种最适合这种情况的机制。 一开始我想到的是泛型类型,但无法想象它的实现,阅读您的建议会很棒。

【问题讨论】:

    标签: java class oop methods


    【解决方案1】:

    如果 CustomerCart 有一个有用的 (*) 通用超类,您只需要一个采用该类实例的方法。

    class CheckOut {
      void checksOut(TheCommonSuperClass param) { ... }
    }
    

    如果它们没有有用的公共超类,则有两个重载,每个类型一个。

    class CheckOut {
      void checksOut(Customer customer) { ... }
      void checksOut(Cart cart) { ... }
    }
    

    (*) “有用”是指超类在checksOut 方法中提供了访问您需要的东西的方法。显然,它们总是有一个公共超类 (java.lang.Object),但这对于执行特定于您的应用程序的任何事情并没有真正的用处。

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 2011-02-27
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      相关资源
      最近更新 更多