java 解耦
探索目的:使用的时候,只需要一次调用就可以完成日常复杂的操作。而工具类的高耦合带来业务代码维护复杂度加大。以 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 解耦的更多相关文章
- 物联网典型场景之智能家电,使用JOSH技术带来的优势和机会~
很多人一直问,用JOSH技术如何改变智能家电,有没有真正的必要? 一部分人的观点:我可以用嵌入式C.汇编完成家电的程序,毕竟这些设备的程序很简单: 另一部分的人:智能家电互相的连接都一直有人在做啊,并 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- java 使用反射技术解耦
1.调用的代码 /src/de/test.java package de; public class Test { public static void main(String[] args) { D ...
- java 里面耦合和解耦
百度解释: 耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象. 解耦就是用数学方法将两种运动分离开来处理问题. 这是形象搞笑的比喻:完全可以这么想像嘛,有一对热恋中 ...
- 设计模式:java及spring观察者模式(有利于代码解耦)
http://www.cnblogs.com/softidea/p/5716870.html 什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环 ...
- Java 9 模块解耦的设计策略
1. 概述 Java 平台模块系统 (Java Platform Module System,JPMS)提供了更强的封装.更可靠且更好的关注点分离. 但所有的这些方便的功能都需要付出代价.由于模块化的 ...
- Java工厂模式解耦 —— 理解Spring IOC
Java工厂模式解耦 -- 理解Spring IOC 最近看到一个很好的思想来理解Spring IOC,故记录下来. 资源获取方式 主动式:(要什么资源都自己创建) 被动式:(资源的获取不是我们创建, ...
随机推荐
- CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org
CentOS 使用yum命令安装出现错误提示"could not retrieve mirrorlist http://mirrorlist.centos.org这个错误, 在网上找了好多, ...
- Guess Number Game
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- python笔记11-元组
lis = ['127.0.0.1','3306']#列表tp = ('127.0.0.1','3306') #定义元组 lis[1]='3307'print(lis)print(tp[0])元祖也有 ...
- 世界上最好的Sed教程
这是一份世界上最好的sed教程,sed是unix系统下流编辑里的超人.最初我写这份说明是为了我的 第二本电子书,然而随后我决定把这份说明变成一本免费电子书预览的同时再次做为文章发布到这里. Sed说明 ...
- ionic3 自定义组件 滑动选择器 ion-multi-picker
1.ionic3中有一个 ion-datatime 给大家选择时间提供了一个很方便的组件 效果如图 链接 https://ionicframework.com/docs/api/component ...
- 在eclipse中启动java程序的时候,每次都会在一个未设置断点的源码里面,卡断点
可以通过取消这个勾选框,来阻止代码在未设置断点的地方停止 具体位置在:Preferences--Java--Debug
- Vue: 用 key 管理可复用的元素
<div id="login"> <template v-if="loginType === 'username'"> <labe ...
- css3中trastion,transform,animation基本的了解
毕业答辩一耽误就是一个月的时间,感觉自己浪费好多时间,而且学习劲头都没有以前的好,学习是个漫长艰苦的事情,也出现了好多问题,希望自己有则改之,无则加冕,曾国藩曾说过:悔者,所以守其缺而禾取求全也.虽然 ...
- Go Example--panic
package main import "os" func main() { //panic会中断程序执行,在此处一直往上抛panic,需要上游的recover来捕获 panic( ...
- 列表:remove/del删除方法中的逻辑“误区”
结果: list_1=["A","B","C","D","E","F",&quo ...