一个肉夹馍思考的零耦合设计

news2025/1/13 10:37:32

       刷抖音听说知识付费是普通人的一个收入增长点,写了三十几篇文章一毛钱没赚,感觉有点沮丧。天上下着小雨雨,稀稀嗦嗦的,由于了很久还是买了一个🤨。

4b210cd3ebc14b18898774061be580ce.jpg

 忽然觉得生活有点悲催,现在已经变得斤斤计较,有点市侩了。继而是无聊,写篇文章。

         Java中可不可以类直接零耦合呢?最终发现一个方法可以实现。我们来模拟五一的一次度假旅游。最初的计划是从美国坐飞机去西安happy,代码如下:

package feiJi;

import java.util.*;

public class Flying {
  public Flying() {}

  private String startCity = "americ";
  private String endCity = "Xi'An";

  public void huaXiang() {
    Globle.staticFlying = this;
    System.out.println("Hai,begin repare…");
  }

  private void flying() {
    System.out.println("开始起飞起始站:" + startCity);
  }

  private void arrived() {
    System.out.println("到达站点:" + endCity);
  }

  public void setStartCity(String cityName) {
    this.startCity = cityName;
  }

  public void setEndCity(String cityName) {
    this.endCity = cityName;
  }

  public void happy() {
    flying();
    arrived();
  }
}
在主方法中调用如下:

import java.util.*;
import feiJi.*;

public class Main {
  private static HeiBox heiBox;

  public static void main(String[] args) {
    System.out.println("开始测试");
    Flying flying = new Flying();
    flying.huaXiang();
    if (HeiBox.flying == null) {
      try {
        Class.forName("feiJi.exWorld.MyHeiBoxMei").newInstance();
      } catch (Exception e) {
        flying.happy();
      } finally {
      }
    }
  }
}
运行结果如下图,一切都是最初设想。

c67b309b24cf4013ac024fa38a45fd73.jpg

 在期中预留一个类将系统本身的部分类引出去,如果没有其它类引用,系统正常运行,这种预留没有任何影响。代码如下:

package feiJi;

import java.util.*;

public class HeiBox {
  public static Flying flying;
}
忽然有一天,系统正常运行着,你在某个位置随手写了一个类放到某个位置。你会惊奇的发现,航线变了。

f36e469977c740cba5aaf201fb6d582c.jpg

 是不是挺意外的,其实并不复杂,只是常规的多态。代码如下:

package feiJi.exWorld;

import java.util.*;
import feiJi.*;
public class MyHeiBox extends HeiBox {
  public static Flying flying;

  public MyHeiBox() {
    flying = Globle.staticFlying;
    flying.setStartCity("americ");
    flying.setEndCity("洛阳");
    flying.happy();
    System.out.println("现在相当于新的飞行员了,路线可以自由驾驶。");
  }
}
这可以作为一种将系统扩展转移给另外一部分人的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1641435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「 网络安全常用术语解读 」SBOM主流格式CycloneDX详解

CycloneDX是软件供应链的现代标准。CycloneDX物料清单(BOM)可以表示软件、硬件、服务和其他类型资产的全栈库存。该规范由OWASP基金会发起并领导,由Ecma International标准化,并得到全球信息安全界的支持,如今CycloneD…

pg数据库学习知识要点分析-1

知识要点1 对象标识OID 在PostgreSQL内部,所有的数据库对象都通过相应的对象标识符(object identifier,oid)进行管理,这些标识符是无符号的4字节整型。数据库对象与相应oid 之间的关系存储在对应的系统目录中&#xf…

nginx--压缩https证书favicon.iconginx隐藏版本号 去掉nginxopenSSL

压缩功能 简介 Nginx⽀持对指定类型的⽂件进行压缩然后再传输给客户端,而且压缩还可以设置压缩比例,压缩后的文件大小将比源文件显著变小,这样有助于降低出口带宽的利用率,降低企业的IT支出,不过会占用相应的CPU资源…

【JVM】GC调优(优化JVM参数)、性能调优

GC调优 GC调优的主要目标是避免由垃圾回收引起程序性能下降。 GC调优的核心指标 垃圾回收吞吐量:执行用户代码时间/(执行用户代码时间 GC时间)延迟:GC延迟 业务执行时间内存使用量 GC调优步骤 发现问题:通过监控…

leetcode_43.字符串相乘

43. 字符串相乘 题目描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 &q…

python:用 mido 生成 midi文件,用 pygame 播放 mid文件

pip install mido Downloading mido-1.3.2-py3-none-any.whl (54 kB) Downloading packaging-23.2-py3-none-any.whl (53 kB) Installing collected packages: packaging, mido Successfully installed mido-1.3.2 packaging-23.2 mido 官网文档 pip intall pygame pygame…

Jenkins(超详细的Docker安装Jenkins教程!!!)

Jenkins Jenkins,原名 Hudson,2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。 官方网站:https://www.jenkins.io/ 中文文档:https://www.jenkins.io/zh/ 为什么需要Jenkins? 我们以前写完代码&a…

SpringBoot 基础简介

目录 1. SpringBoot 概述 1.1. 为什么会有springboot 1.1.1. 传统Spring 的两个缺点 1.1.2. Springboot 功能 2. SpringBoot 快速搭建 2.1. 创建Maven项目​编辑​编辑​编辑 2.2. 导入SpringBoot起步依赖 2.3. 定义controller 2.4. 添加引导类 2.5. 启动访问 3. Sprin…

开源的 RAG 和 workflow 技术对比调研

一、先来了解一下开源的技术有哪些,怎么样 我自己就是做RAG工作的,但是还是想关注一下开源的技术做到了什么程度。 所以调研了很长时间,也体验了一下。这里写一篇文章来分享一下结果。 我用五一的假期时间,来做调研,看…

工业光源-环形无影光源-特点

产品特点 ◆采用特殊的漫射结构,使光均匀的扩散在照射区域: ◆常应用在被测物体需要均匀的的表面照明并且要避免反光或光斑的场合。

Jupyter Notebook 中使用虚拟环境的Python解释器

问题:创建虚拟环境,在pycharm中配置虚拟环境的Python解释器,然后在pycharm中打开ipynb,执行发现缺少包,但是虚拟环境中已经安装了 解决方式: 配置Jupyter Notebook 使用虚拟环境的Python解释器 1&#x…

thinkphp家政上门预约服务小程序家政保洁师傅上门服务小程序上门服务在线派单安装教程

介绍 thinkphp家政上门预约服务小程序家政保洁师傅上门服务小程序上门服务在线派单安装教程 上门预约服务派单小程序家政小程序同城预约开源代码独立版安装教程 程序完整,经过安装检测,可放心下载安装。 适合本地的一款上门预约服务小程序&#xff0…

matlab期末知识

1.期末考什么? 1.1 matlab操作界面 (1)matlab主界面 (2)命令行窗口 (3)当前文件夹窗口 (4)工作区窗口 (5)命令历史记录窗口 1.2 matlab搜索…

FIFO Generate IP核使用——AXI接口FIFO简介

AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4、AXI3和AXI4-Lite。除了Native接口FIFO支持的应用外,AXI FIFO还可以用于AXI系统总线和点对点高速应用。 AXI接口FIFO不支持Builtin FIFO和 Shift Register FIFO配置。 当…

Java将文件目录转成树结构

在实际开发中经常会遇到返回树形结构的场景&#xff0c;特别是在处理文件系统或者是文件管理系统中。下面就介绍一下怎么将文件路径转成需要的树形结构。 在Java中&#xff0c;将List<String>转换成树状结构&#xff0c;需要定义一个树节点类&#xff08;TreeNode&#…

【Python编程实践1/3】模块

目录 目标 模块 import ​编辑 代码小结 题目 from...import 随机模块 代码小结 randint函数 骰子大战 choice函数 总结 目标 拧一颗螺丝&#xff0c;只会用到螺丝刀&#xff1b;但是修一台汽车&#xff0c;需要一整套汽修的工具。函数就像螺丝刀&#xff0c;可以帮…

Redis---------实现商品秒杀业务,包括唯一ID,超卖问题,分布式锁

订单ID必须是唯一 唯一ID构成&#xff1a; 代码生成唯一ID&#xff1a; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.tim…

2024年IEEE第16届先进信息通信技术国际会议(ICAIT 2024)即将召开!

2024年IEEE第16届先进信息通信技术国际会议&#xff08;ICAIT 2024&#xff09;将于2024年 8月16-19日在湖北恩施举行。先进信息通信技术作为当今世界科技发展的前沿领域&#xff0c;不仅是推动经济社会发展的重要引擎&#xff0c;也是提升国家综合竞争力的重要支撑。因此&…

EDA(一)Verilog

EDA&#xff08;一&#xff09;Verilog Verilog是一种用于电子系统设计自动化&#xff08;EDA&#xff09;的硬件描述语言&#xff08;HDL&#xff09;&#xff0c;主要用于设计和模拟电子系统&#xff0c;特别是在集成电路&#xff08;IC&#xff09;和印刷电路板&#xff08;…

AI-数学-高中53-离散型随机变量的均值与方差

原作者视频&#xff1a;【随机变量】【一数辞典】3离散型随机变量的均值与方差_哔哩哔哩_bilibili 标准差 方差开根