1.class A { public int ma; // .... }class B { private A a = new A(); public void methodA() { a.ma += 1; // 这里 } }// 改正:class A { private int ma; // public --> private // .... //加 getter/setter public int getMa(){ return this.ma; } public void set(int ma) { this.ma = ma; } }class B { private A a = new A(); public void methodA() { this.a.setMa(this.a.getMa() + 1); } } 2.class A { private int ma; // .... public int getMa(){ return this.ma; } public void set(int ma) { this.ma = ma; } }class B { private A a = new A(); // 这里,依赖 public void methodA() { this.a.setMa(this.a.getMa() + 1); } }// 改正:-------------------------------- interface _IA { // .... int getMa(); void set(int ma); }class A implements _IA{ private int ma; // .... public int getMa(){ return this.ma; } public void set(int ma) { this.ma = ma; } } class B { private _IA a = new A(); // A 改为 _IA public void methodA() { this.a.setMa(this.a.getMa() + 1); } }再进一步: class B { private _IA a; // 这里在B中不创建一个_IA的对象,而使用DI,依赖注入 public void methodA() { this.a.setMa(this.a.getMa() + 1); } }
嗯,当然使用 interface + implement class 是有需求才会这么设计,不能一上来什么都是一个接口加一个实现类。这样超前设计是没必要的,而且是过度的设计,弊大于利。
public int ma; // ....
}class B {
private A a = new A(); public void methodA() {
a.ma += 1; // 这里
}
}// 改正:class A {
private int ma; // public --> private // .... //加 getter/setter
public int getMa(){
return this.ma;
}
public void set(int ma) {
this.ma = ma;
}
}class B {
private A a = new A(); public void methodA() {
this.a.setMa(this.a.getMa() + 1);
}
}
2.class A {
private int ma; // .... public int getMa(){
return this.ma;
}
public void set(int ma) {
this.ma = ma;
}
}class B {
private A a = new A(); // 这里,依赖 public void methodA() {
this.a.setMa(this.a.getMa() + 1);
}
}// 改正:--------------------------------
interface _IA {
// .... int getMa();
void set(int ma);
}class A implements _IA{
private int ma; // .... public int getMa(){
return this.ma;
}
public void set(int ma) {
this.ma = ma;
}
}
class B {
private _IA a = new A(); // A 改为 _IA public void methodA() {
this.a.setMa(this.a.getMa() + 1);
}
}再进一步:
class B {
private _IA a; // 这里在B中不创建一个_IA的对象,而使用DI,依赖注入 public void methodA() {
this.a.setMa(this.a.getMa() + 1);
}
}