我想向您询问有关以下 SOLID 代码的更多信息。如果这三个类都遵循 SOLID 概念。
public interface A {
public void calculate(String a);
}
public class B implements A {
@Override
public void calculate(String b) {
System.out.println("value: " + b);
}
}
public class C {
private A a;
public void show() {
a = new B();
a.calculate("test");
}
}
从我看待事物的角度来看,
C类打破了
单一责任原则通过处理两个职责,即实例化其他对象(B 的实例)和show功能,无论是什么。对象创建应该由单独的类处理,并且依赖项应该注入给用户。
开闭原则通过与 B 紧密耦合,而它可能依赖于接口 A,因此可以通过使用 A 的另一个实现来进行扩展。参见this https://en.wikipedia.org/wiki/Open/closed_principle#Polymorphic_open.2Fclosed_principle了解更多信息。换句话说,C 应该使用 A,而实际的实现应该注入到 C 中。
以下是如何将 C 编写为 SOLID。
class C {
private A a;
public C(A a) {
super();
this.a = a;
}
public void show() {
a.calculate("test");
}
}
class Creator {
C createC() {
A b = new B();
return new C(b);
}
}
Creator
可以用像Spring这样的依赖注入框架来代替。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)