我怎么知道一个班级是否有很多责任,我该如何消除这个问题

时间:2019-03-20 00:27:52

标签: java oop

我正在做一个关于餐厅的项目,这家餐厅有很多产品(食物),我有一个Food Combo类,并且此组合由 1个饮料,1个主菜和2个EXTRAS组成。该类具有很多方法和属性,当仅应返回价格并带来附加价格时,很少有方法可以进行数学运算和验证

public class FoodCombo {

private ArrayList<Product> list = new ArrayList(); //Each Product has his own price
private boolean refill; //Do you want your drink to have refill?
private boolean supersizing; //
private final double COMBO_DISCOUNT = 0.20;
private final double REFILL_PRICE = 300;
private final double SUPERSIZING_PRICE = 300;

public FoodCombo() {
}

public void addProducto(Product product) {
    list.add(product);
}

/* This class needs one Main Dish, two Extras, and One Drink to be considered
as a Food Combo*/
public int countMainDishes() //1  


public int countExtras();     //2

public int countDrinks() //3  


public boolean isItCombo() {
}

;  //Use above methods to verify

//Calculate Methods
public double calculateSubPrice();

public double calculatediscount()

public double calculateRefill();

public double calculateSuperSize();

public double calculateTotal();

public String toString();

///我很感谢您的建议:)

}

我正在考虑将此类的责任分为多个类别,因此,我应该创建多少个类来完成编程的良好实践?他们应该怎么做?

1 个答案:

答案 0 :(得分:1)

第一件事是:忘记实现。因此,“当应仅返回一个价格并带来其附加价格时,很少有方法可以进行数学运算和验证”。

如果您想知道某个类是否做得太多,请从较高的角度写下该类的用途和作用。然后看看您写的内容,您将能够知道它是否做得太多。查看其责任是否集中。

例如,如果我有一个课程:

“此类负责与NRI G13硬币接收器设备进行接口,提供API以接收硬币,处理错误并报告收到的现金量。”

然后,尽管其实现可能做得很多,但类本身并没有做太多。

或者,如果我有课:

“此类从数据库读取,处理数据,将其发送到另一台服务器,然后将副本发送到浏览器。”

然后,尽管其实现可能是相当基本的(所有这些操作通常都具有从库中调用的一个函数),但该类执行了太多操作,因为它负责实现太多结果。