Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何知道一个班级是否有很多责任,如何消除这个问题_Java_Oop - Fatal编程技术网

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

Java 我如何知道一个班级是否有很多责任,如何消除这个问题,java,oop,Java,Oop,我正在做一个关于一家餐厅的项目,这家餐厅有很多产品(食物),我有一个一流的食物组合,这个组合由一杯饮料、一道主菜和两个附加菜组成。这个课程有很多方法和属性,当这些方法只返回一个价格并带来额外的价格时,很少有方法进行数学运算和验证 public class FoodCombo { private ArrayList<Product> list = new ArrayList(); //Each Product has his own price private boolean ref

我正在做一个关于一家餐厅的项目,这家餐厅有很多产品(食物),我有一个一流的食物组合,这个组合由一杯饮料、一道主菜和两个附加菜组成。这个课程有很多方法和属性,当这些方法只返回一个价格并带来额外的价格时,很少有方法进行数学运算和验证

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();
公共类FoodCombo{
private ArrayList list=new ArrayList();//每种产品都有自己的价格
private boolean refill;//您的饮料要重新加注吗?
私有布尔超大小//
私人最终双人组合折扣=0.20;
私人最终双重充值价格=300;
私人最终双倍放大价格=300;
公共食品管理局(){
}
公共无效addProducto(产品){
列表。添加(产品);
}
/*这门课需要考虑一道主菜、两道附加菜和一杯饮料
作为食物组合*/
public int countmain()//1
public int countExtras();//2
public int countDrinks()//3
公共布尔值isItCombo(){
}
;//使用上述方法进行验证
//计算方法
公共双计算subprice();
公共双计算搜索()
公共双计算器填充();
公共双计算SuperSize();
公共双重计算总计();
公共字符串toString();
//我很感激你的建议:)

}


我想把这门课的职责分成多个类,那么我应该创建多少个类来完成良好的编程实践呢?他们应该怎么做呢?

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

如果你想知道某个类是否做得太多,请从高层的角度写下该类的用途和作用。然后看看你写的东西,你就能知道它是否做得太多了。看看它的责任是否集中

例如,如果我有一个类:

此类负责与NRI G13硬币接受器设备接口,提供一个API来接受硬币、处理错误和报告收到的现金量

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

或者,如果我有一门课:

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


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

您研究过单一责任原则吗?“我应该创建多少个类”听起来好像你想亲身体验一下这个原则,不管网上有多少这个原则的例子。你应该阅读一些坚实的原则,学习一些编码模式,这样你才能最终尝试将一些架构应用到你未来的产品中。@VinceEmigh我对此进行了一些研究,但是你是对的,我应该对此做更多的研究,谢谢你的反馈:@ingkevin收到了,谢谢你的反馈,先生,第二段很好,我将把这些东西应用到我未来的项目和这一段。