java - 我如何知道一个班级是否有很多责任以及如何消除这个问题
问题描述
我在做一个关于餐厅的项目,这家餐厅有很多产品(食物),我有一个类食物组合,这个组合符合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();
//我会感谢你的建议:)
}
我正在考虑将这个类的责任分成多个类,所以我应该创建多少个类来完成编程的良好实践?他们应该怎么做?
解决方案
第一件事是:忘记实施。因此,“当这应该只返回一个价格并带来他的额外价格时,很少有方法进行数学运算和验证”并不重要。
如果你想知道一个类是否做得太多,从高层次的角度写下这个类的用途和作用。然后看看你写的东西,你就能判断它是否做得太多。看其职责是否集中。
例如,如果我有一堂课:
“这个类负责与 NRI G13 Coin Acceptor 设备接口,提供一个 API 来接受硬币,处理错误,并报告收到的现金数量。”
然后即使它的实现可能做了很多,类本身并没有做太多。
或者,如果我有课:
“这个类从数据库中读取,处理数据,将其发送到另一台服务器,并将副本发送到浏览器。”
然后,即使它的实现可能相当基本(所有这些操作通常只有一个函数可以从库中调用),但该类做的太多了,因为它有责任实现太多的结果。
推荐阅读
- c# - IQueryable 是否在每次访问对象时重新查询数据库?
- php - Grav CMS:在页面选择列表中隐藏模块化页面
- php - PHP静态类自动重置
- javascript - 如何在 html 中添加点击到产品列表并将项目点击到 firestore
- assembly - ARM 向量指令 - 16 字节与 8 字节
- javascript - Javascript 承诺调用只发生一次
- ruby-on-rails - 从 rails 中的 graphql api 返回 base64 字符串
- r - 如何通过反应性在闪亮中添加递归模块
- c# - 如何使用 Selenium C# 在 Chrome 中禁用下载警告?
- javascript - Nextjs 上的 ContentEditable,更新未显示在状态