java两个不同的对象,代码相同

java两个不同的对象,业务代码相同,写两套代码看着难受。怎么实现

可以使用面向对象编程的思想,将业务代码独立出来作为一个类,然后将这个类封装成一个单独的模块,让两个不同的对象分别引用这个模块,这样就避免了重复代码的问题。

具体实现方法如下:

创建一个新的类,将相同的业务代码放入该类的方法中,这里我们称之为BusinessLogic类。

public class BusinessLogic {
    public void doBusiness() {
        // 这里放置业务代码
    }
}

在需要使用业务代码的地方,可以创建一个新的实例来调用BusinessLogic类的方法。

BusinessLogic businessLogic1 = new BusinessLogic();
businessLogic1.doBusiness();

BusinessLogic businessLogic2 = new BusinessLogic();
businessLogic2.doBusiness();

这样,两个不同的对象就可以共享相同的业务逻辑代码,而不需要在两个类中重复实现。如果需要修改业务逻辑,只需要修改BusinessLogic类的代码即可,其他引用了该类的对象也会自动更新。
除此之外,也可以使用继承的方式,将公共代码写在父类中,让两个不同的对象分别继承该父类即可。但是使用继承可能会使代码结构变得复杂,因此需要根据具体情况选择最合适的实现方式。

抽象一个公共接口出来, 业务代码收敛成一个公共的方法,入参是这个公共接口
不同的业务对象 实现这个公共接口,各自调用的地方直接调上面公共方法,传入对应的业务对象。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7617584
  • 这篇博客你也可以参考下:java静态变量,静态代码块,普通代码块,构造函数加载顺序
  • 同时,你还可以查看手册:java-集合 - 关于使用和扩展Java集合框架的课程。- 聚合操作 代表你对集合进行迭代,这使你能够编写更简洁和有效的代码,处理存储在集合中的元素。 -平行主义 中的内容
  • 除此之外, 这篇博客: Java中多线程、多线程的实现方式、同步代码块的方式中的 线程状态 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 初始状态
      线程已被创建但尚未执行(start() 尚未被调用)
    2. 可执行状态
      线程可以执行,虽然不一定正在执行。CPU 时间随时可能被分配给该线程,从而使得它执行
    3. 死亡状态
      正常情况下 run() 返回使得线程死亡。调用 stop()或 destroy() 亦有同样效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁
    4. 阻塞状态
      线程不会被分配 CPU 时间,无法执行
      static void sleep(long ms) :如果在某一个线程中调用 Thread.sleep方法,则此线程进入有限期等待状态(计时状态/休眠,单位ms), 同时释放cpu;但是不释放该线程拥有得到锁标记
      public final join():允许其他线程加入到当前线程中(调用join方法语句所在的线程),让调用join方法的线程先执行,等待其他线程任务执行结束之后,再执行自身的任务
  • 您还可以看一下 陈璇老师的Java面向对象课程中的 代码实现-汽车相关类小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以提供以下优化方案: 使用面向对象编程的特性来实现处理两个不同Java对象的业务代码。这需要你实现一个可重用的代码块,可以通过继承或者实现一个公共接口来实现这一点。

    首先,你需要定义一个父类或接口,其中包含处理该业务逻辑所需的公共方法和属性。

    接下来,你可以创建两个子类,每个类都可以使用继承或者实现该公共接口,用于处理属于不同Java对象的特定业务逻辑,并在其中重写父类的方法进行自己的操作。

    在客户端代码中,你可以根据需要对每个类进行实例化,并调用适当的方法,这两个类都可以使用相同的业务逻辑代码,而无需重复编写它。

    以下是示例代码:

    //定义一个接口来规范处理业务逻辑的方法
    public interface BusinessLogicHandler {
      void handleBusinessLogic();
    }
    
    //定义一个公共父类,其中包含处理业务逻辑所需的公共方法和属性
    public abstract class BusinessLogicHandlerBase implements BusinessLogicHandler {
      protected Object objData; //在此处定义你需要使用的Java对象等公共属性
    
      @Override
      public void handleBusinessLogic() {
        //在这里实现通用业务逻辑代码
        System.out.println("Common business logic is executed");
      }
    }
    
    //定义第一个子类,重写父类的方法并实现第一种Java对象的业务逻辑
    public class FirstObjectHandler extends BusinessLogicHandlerBase {
      public FirstObjectHandler(Object data) {
        objData = data; //将需要处理的第一种Java对象传递给公共属性
      }
    
      @Override
      public void handleBusinessLogic() {
        super.handleBusinessLogic(); //调用父类的通用业务逻辑方法
        //在这里实现第一种Java对象的业务逻辑代码
        System.out.println("Business logic for first object is executed");
      }
    }
    
    //定义第二个子类,重写父类的方法并实现第二种Java对象的业务逻辑
    public class SecondObjectHandler extends BusinessLogicHandlerBase {
      public SecondObjectHandler(Object data) {
        objData = data; //将需要处理的第二种Java对象传递给公共属性
      }
    
      @Override
      public void handleBusinessLogic() {
        super.handleBusinessLogic(); //调用父类的通用业务逻辑方法
        //在这里实现第二种Java对象的业务逻辑代码
        System.out.println("Business logic for second object is executed");
      }
    }
    
    //客户端代码,可以根据需要对每个类进行实例化并调用适当的方法
    public class Client {
      public static void main(String[] args) {
        Object firstData = new Object();
        Object secondData = new Object();
    
        //调用业务逻辑处理方法以处理第一种Java对象的数据
        BusinessLogicHandler firstObjectHandler = new FirstObjectHandler(firstData);
        firstObjectHandler.handleBusinessLogic();
    
        //调用业务逻辑处理方法以处理第二种Java对象的数据
        BusinessLogicHandler secondObjectHandler = new SecondObjectHandler(secondData);
        secondObjectHandler.handleBusinessLogic();
      }
    }
    

    请注意,这只是一个示例,你需要根据特定的业务场景进行修改和适应。但这个例子可以清楚地演示如何使用面向对象编程的特性来处理不同Java对象的相同业务逻辑。