小编lyn*_*nxx的帖子

有不止一种方法违反单一职责原则吗?

我对单一职责原则很困惑。该原则指出,类更改的原因应该只有一个。

我面临的问题是,对方法的任何更改或做事中的任何逻辑更改都会更改类。例如,考虑以下类:

class Person{
    public void eat(){ };
    public void walk(){ };
    public void breathe(){ };
    public void run(){ };
    public void driveCar(Car car){ };
}
Run Code Online (Sandbox Code Playgroud)

鲍勃叔叔将其描述为应该只有一个人/演员负责更改。我有以下两个问题:

  1. 对于上面的类,谁是可以负责变化的演员/人?
  2. 饮食、呼吸或行走的逻辑的任何变化不会改变 Person 类吗?那么这是否意味着每一种方法都是改变的理由,因为做事的逻辑可能会改变?

java oop design-patterns single-responsibility-principle solid-principles

6
推荐指数
1
解决办法
433
查看次数

Gitlab - 在分支中恢复 - 恢复合并时选择哪个分支

我对恢复合并时在“恢复分支”下拉列表中选择哪个分支有点困惑。我不小心将“test-1”分支合并到了 Master 分支中。现在我想恢复它,但是我会单击恢复按钮,如下所示:

在此输入图像描述

单击该按钮将显示以下弹出窗口:

在此输入图像描述

我真的很困惑应该在下拉列表中选择哪个分支。我想恢复 test-1 和 master 的合并。?

git gitlab

4
推荐指数
1
解决办法
3216
查看次数

耦合 - 除了更改方法签名或返回类型之外,更改一个模块如何影响另一个模块?

在高耦合环境中,更改一个模块会影响另一个模块。好的,但我看不出这怎么可能(除了更改方法签名或返回类型)?

好吧,如果我更改一个类,只有在以下情况下它才能破坏其他类中的代码:

  1. 如果我突然更改方法的返回类型 - 那么我将不得不转到另一个类并修复类型不匹配的问题。
  2. 如果我更改方法签名 - 那么我将不得不转到所有依赖类并在调用更改的方法的任何地方更改方法参数。

出于同样的原因,依赖抽象(接口)是很好的,这样我们就可以保证定义的方法将在那里。

除此之外,更改一个类还能如何影响另一个依赖类?

language-agnostic oop dependencies design-patterns interface

3
推荐指数
1
解决办法
368
查看次数

将Integer对象转换为双掷错误

我正在尝试编写一个实现Comparable接口的'Cup'类。

我的代码:

class Cup<T> implements Comparable<T>{

    public T radius;
    public T height;

    public Cup(T radius, T height){
        this.radius = radius;
        this.height = height;
    }

    public double getVolume(){

        return (double) radius * (double) radius* (double) height* 3.14 ; // throwing error 
    }

    public int compareTo(Object cup){

        if(getVolume()== ((Cup) cup).getVolume()){ // cannot access java.lang.Comparable
            return 0;
        }
        else if(getVolume() > ((Cup) cup).getVolume()){
            return 1;
        }
        else if(getVolume() < ((Cup) cup).getVolume()){
            return -1;
        }
        return -2;
    }
}

class test{
    public static void …
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
48
查看次数

Why can't I change the return type of overriden methods (other than covariant return type)?

PLEASE NOTE - I am asking WHY? It would be very useful if you could give an example where changing the return type actually breaks the code

why can't I change the return type of an overridden method (other than covariant return types).

class Parent{

   public void sayhello(){ ... };

}

class Child extends Parent{

    public String sayhello() { . . .}

}
Run Code Online (Sandbox Code Playgroud)

Now if I run the following code:

class test{

    public static void main(String[] args){

       Parent p = …
Run Code Online (Sandbox Code Playgroud)

java overriding jvm

-1
推荐指数
1
解决办法
86
查看次数