java 解耦

时间:2024-01-12 13:32:32

探索目的:使用的时候,只需要一次调用就可以完成日常复杂的操作。而工具类的高耦合带来业务代码维护复杂度加大。以 java 的思想对原始工具加以改进。

  有没有比这里尝试的方法更高明的,在 A_Utils、B_Utils 的编写时,还是有一致的代码。


  有两个工具类,实现的方法完全一致,仅仅是成员变量的值不同。多次功能改进后,方法部分变得非常繁杂(功能更加强大)。需要再次升级功能时,面对冗余的代码,感叹耦合带来的烦恼。试解之……

  缩略图java 解耦

  功能实现:BaseClass 类实现主要功能

package argorutils;

public final class BaseClass {
private String str = "invalid"; public BaseClass(String s) {
str = s;
} public void getIt() {
System.out.println(str);
} public void cutIt() {
System.out.println(new String(str.getBytes(), 0, 1));
}
}

  两个接口:Iua、Iub,为不同的业务设定成员变量

// 接口a
package argorutils; public interface Iua {
public final static String s = "ok";
public final static BaseClass f = new BaseClass(s);
} // 接口b
package argorutils; public interface Iub {
public final static String s = "mask";
public final static BaseClass f = new BaseClass(s);
}

  工具类重新实现:原来的两个工具类重新实现(A_Utils,B_Utils)

// A
package argorutils; public final class A_Utils implements Iua {
public static void getIt() {
f.getIt();
} public static void cutIt() {
f.cutIt();
}
} // B
package argorutils; public class B_Utils implements Iub {
public static void getIt() {
f.getIt();
} public static void cutIt() {
f.cutIt();
}
}

  测试类:

package testpackage;

import org.junit.Test;

import argorutils.A_Utils;
import argorutils.B_Utils; public class Demo { @Test
public void doT() {
B_Utils.getIt();
B_Utils.cutIt(); A_Utils.getIt();
A_Utils.cutIt();
}
}

coupling