spring

0201_【掌握】对象实例化的本质操作

对象实例化的本质操作

课程内容

​ 任何事物的产生都有其背景存在,既然Spring如此流行,那么背景就是Java语言设计的功能不足,为了便于大家的理解,下面针对于一个传统代码进行开发演进。

1、【IDEA工具】创建一个新的项目模块: base-project;

2. 【base-project】创建一个IMessageService消息服务接口

package com.yootk.service;

public interface IMessageService { // 传统的业务接口
    /**
     * 实现消息服务处理
     * @param msg 当前要处理的消息内容
     * @return 消息处理后的结果
     */
    public String echo(String msg);
}

3、【base-project项目】按照Java 原生的设计来讲,此时应该定义有一个IMessageService接口的实现子类。

package com.yootk.service.impl;

import com.yootk.service.IMessageService;

public class MessageServiceImpl implements IMessageService { // 定义接口的实现子类

    @Override
    public String echo(String msg) { // 方法覆写
        return "【ECHO】" + msg;
    }
}

4、【base-project项目】随后在程序的主类之中进行业务接口的实例化以及业务方法调用。

package com.yootk.service;

import com.yootk.service.impl.MessageServiceImpl;

public class YootkDemo {
    public static void main(String[] args) {
        IMessageService messageService = new MessageServiceImpl(); // 通过接口子类创建接口实力
        System.out.printf(messageService.echo("沐言科技:www.yootk.com")); // 业务接口调用
    }
}

执行结果:

【ECHO】沐言科技:www.yootk.com

​ 那么请问,对于当前的设计存在有那些问题?在标准的设计开发过程致中和,程序一定要分为业务接口和业务子类,如果更加标准的设计之中需要进行一个抽象类的设计(适配器设计模式)。.


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PNSchtV7-1660295373730)(…\unit2\img\01\01.png)]


​ 如果当前的程序运行在了多线程的环境之内,问题也就出现了,因为不同的线程都需要维护自己对象的状态,那么请问,在这样的环境下,如果线程数量暴增,最终会带来的问题就是对象产生过多,而对象产生过多必然会造成JVM产生频繁的GC.

—[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eh6m7aBa-1660295373732)(…\unit2\img\01\02.png)]


关键字new是产生耦合得最大元凶

​ 很多情况下,一个业务接口要处理的VO类型,可能会有不同,但是业务对象的处理应该都是相同的,那么请问,这个时候如果要想实现业务的对象重用你该怎么做?如果此时关键字new会产生所谓的对象耦合机制,那么请问,整个耦合又该如何解决呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值