首页 > 解决方案 > 我如何知道一个班级是否有很多责任以及如何消除这个问题

问题描述

我在做一个关于餐厅的项目,这家餐厅有很多产品(食物),我有一个类食物组合,这个组合符合1 个饮料、1 个主菜和 2 个附加品。这个类有很多方法和属性,很少有方法做数学运算和验证,这应该只返回一个价格并带来他的附加价格

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();

//我会感谢你的建议:)

}

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

标签: javaoop

解决方案


第一件事是:忘记实施。因此,“当这应该只返回一个价格并带来他的额外价格时,很少有方法进行数学运算和验证”并不重要。

如果你想知道一个类是否做得太多,从高层次的角度写下这个类的用途和作用。然后看看你写的东西,你就能判断它是否做得太多。看其职责是否集中。

例如,如果我有一堂课:

“这个类负责与 NRI G13 Coin Acceptor 设备接口,提供一个 API 来接受硬币,处理错误,并报告收到的现金数量。”

然后即使它的实现可能做了很多,类本身并没有做太多。

或者,如果我有课:

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

然后,即使它的实现可能相当基本(所有这些操作通常只有一个函数可以从库中调用),但该类做的太多了,因为它有责任实现太多的结果。


推荐阅读