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

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


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

  缩略图

  功能实现: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

java 解耦的更多相关文章

  1. 物联网典型场景之智能家电,使用JOSH技术带来的优势和机会~

    很多人一直问,用JOSH技术如何改变智能家电,有没有真正的必要? 一部分人的观点:我可以用嵌入式C.汇编完成家电的程序,毕竟这些设备的程序很简单: 另一部分的人:智能家电互相的连接都一直有人在做啊,并 ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】

    一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...

  4. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. java 使用反射技术解耦

    1.调用的代码 /src/de/test.java package de; public class Test { public static void main(String[] args) { D ...

  6. java 里面耦合和解耦

    百度解释: 耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象. 解耦就是用数学方法将两种运动分离开来处理问题. 这是形象搞笑的比喻:完全可以这么想像嘛,有一对热恋中 ...

  7. 设计模式:java及spring观察者模式(有利于代码解耦)

    http://www.cnblogs.com/softidea/p/5716870.html 什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环 ...

  8. Java 9 模块解耦的设计策略

    1. 概述 Java 平台模块系统 (Java Platform Module System,JPMS)提供了更强的封装.更可靠且更好的关注点分离. 但所有的这些方便的功能都需要付出代价.由于模块化的 ...

  9. Java工厂模式解耦 —— 理解Spring IOC

    Java工厂模式解耦 -- 理解Spring IOC 最近看到一个很好的思想来理解Spring IOC,故记录下来. 资源获取方式 主动式:(要什么资源都自己创建) 被动式:(资源的获取不是我们创建, ...

随机推荐

  1. R语言安装xlsx包,读入excel表格

    开学的时候,男神给了数据(.xlsx格式)让用R语言分析分析,作为编程小白,读了一天都没读近R,更别提如何分析了. 现在小伙伴们都喜欢读txt 和csv格式的,好多xlsx的表格读不进R,将xlsx格 ...

  2. 带通滤波 matlab

    巴特沃斯:1.带阻滤波器设计带阻滤波器指标:阻带上边界频率:5Kz:阻带下边界频率:7Kz:通带上边界频率:2Kz:通带下边界频率:9Kz:通带最大衰减:1dB:阻带最小衰减:20dB:设计程序如下: ...

  3. binary and out mode to open a file

    When I use binary and out mode to open a exist file, and to modify the 4th and 8th byte data to 0x78 ...

  4. Travel notes in Vietnam

    I‘m  back:)  For preparing IELTS exam, I haven't written article for over 70 days. It's a good exper ...

  5. SpringBoot(四)thymeleaf+MyBatis+MySql

    接着上一节 1.第一步:在pom文件中添加 <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.bo ...

  6. shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  7. gpu/mxGPUArray.h” Not Found

    https://cn.mathworks.com/matlabcentral/answers/294938-cannot-find-lmwgpu More specifically change th ...

  8. Error: No EPCS layout data - looking for section [EPCS-C84018]

    /********************************************************************** * Error: No EPCS layout data ...

  9. 软件工程 week 05

    关于 石墨文档客户端 的案例分析 作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 一.调研测评 测试平台:Windows 1 ...

  10. ESP8266EX资料

    https://github.com/esp8266/Arduino http://espressif.com/zh-hans/support/explore/faq 电路资料图如下: 介绍功能: 参 ...