java 在new时候实现一个纯虚接口的类,并申请一个该类的对象

SystemVerilog构造函数new:从内存分配到对象初始化的完整指南 本文深入解析SystemVerilog构造函数new的双重角色,从内存分配到对象初始化的完整流程。通过UVM验证平台中的实际案例,详细讲解new函数的最佳实践、常见陷阱及性能优化技巧,帮助开发者掌握SystemVerilog对象构造的核心技术。 阅读详情
public class main {

	public interface onClidk {
		abstract void onClick();
	}

	void test(onClidk clk) {
		clk.onClick();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new main().test(new onClidk() {
			public void onClick() {
				System.out.println("hello world");
			}
		});
	}

}
其本质,是实现了接口的一个无名类时,同时申请了该类的一个对象。
这是java语法,是javac编译器自己的事情,不用研究其本质。或许javac编译的时候就把源码预编译为通常可以读懂的代码了
 
2014年2月13日10:00:09


 

C++动态库接口化设计:解决ABI兼容与跨模块调用难题 动态链接库(DLL)是软件模块化与代码复用的核心技术,它通过运行时加载实现功能解耦。其核心原理在于将代码编译为独立二进制模块,通过导出函数或类供主程序调用。然而,直接导出C++类常因编译器ABI(应用程序二进制接口)差异导致内存布局不一致、名称修饰冲突等问题,引发跨版本或跨编译器调用时的崩溃。为解决这一痛点,采用纯虚接口配合工厂模式的设计模式成为关键,它通过定义稳定的二进制契约,隔离实现细节,从而保障动态库的长期兼容性与可维护性。这种接口化设计在大型框架(如COM、Qt插件系统)及需要提供稳定SDK的应用场 阅读详情

相关推荐

C++继承机制深度解析:从内存布局到多态实现与设计陷阱

面向对象编程(OOP)是软件工程的核心范式,其三大特性——封装、继承和多态——共同构建了代码复用和扩展的基石。继承作为其中承上启下的关键,不仅是一种语法机制,更是一种建立类层次关系、实现抽象与接口约定的核心设计思想。其原理在于通过派生类复用并扩展基类的成员,在内存中形成包含基类子对象的特定布局,并通过虚函数表(vtable)机制实现运行时多态,这是实现动态绑定的技术核心。理解继承的内存模型、构造函数/析构函数调用链以及虚函数表的工作原理,对于编写高效、健壮的C++程序至关重要。其技术价值在于提升代码的复用性

wangqiaowqo的专栏 510

【Java基础】new一个接口 -- p277

接口不能被实例化,只能通过多态的形式,让子类实例化。接口的new是使用了匿名内部类实现了接口,而不是new一个新对象。

汤姆lazy的优快云博客 2430

C++设计模式实战:从Java到C++的思维转换与RAII应用

设计模式是解决面向对象设计中常见问题的可复用方案,其核心思想在于通过封装变化、松耦合等原则提升代码的可维护性和扩展性。在C++中实现这些模式,需要深刻理解其与Java等托管语言的关键差异,特别是内存管理和对象模型。C++没有垃圾回收机制,因此必须采用RAII(资源获取即初始化)原则,利用智能指针(如std::unique_ptr、std::shared_ptr)来管理对象的生命周期,这是构建健壮系统的基石。例如,在实现策略模式或观察者模式时,通过智能指针明确资源所有权,可以避免内存泄漏和悬垂指针问题。这些技

java2000.net 368

java中接口可以new吗

如何在Java中实现接口可以new 1. 整体流程 首先我们来看一下整个实现Java接口可以new的流程,可以使用表格来展示: Java接口可以new实现流程#render_9_404732353-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-si...

weixin_35706281的博客 371

java 中使用匿名类直接new接口详解及实例代码

主要介绍了java 中使用匿名类直接new接口详解及实例代码的相关资料,需要的朋友可以参考下

W5500以太网模块官方驱动移植

W5500驱动移植

weixin_42621095的博客 4125

java 虚类_java中接口(interface)和虚基类(abstract class)的区别

在Java语言中,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的...

weixin_29213655的博客 1052

【OWL部署】Manus又一开源平替OWL真的很好用吗?手把手带你部署并运行你的AI助手OWL(对接Qwen、硅基流动接口)

本文介绍了通用人工智能OWL的部署及国内接口对接,全篇干货满满,手把手教学。

MosuoLc的博客 4041

Java之可以new 一个接口?

先说个Java 接口的基本常识: 接口只是定义了一个标准,很多类可以实现这个接口,eg:List接口 List list = new ArrayList(); // 实例化的是ArrayList这个类 List list = new Vector(); // 实例化的是Vector这个类 其中:ArrayList 和 Vector 这两个类都实现了List接口 Ainsta...

LVXIANGAN的专栏 2万+

FOC-滑膜控制器SMC/滑膜观测器SMO

三相PMSM是一个非线性、强耦合的多变量控制系统,对于外界的扰动或者电机自身的参数发生变化时,传统的PI控制并不能满足实际的要求。因此可以引入滑模控制SMC,它对扰动和参数不敏感,响应速度也够快。简单来说就是,滑膜观测器就是通过采样与坐标变换得到的Ualpha,Ubeta,Ialpha,Ibeta四个参数值,获取。SMO叫滑膜观测器(Sliding Mode Observer),用于获取转子位置信息与转速信息。2、作为滑膜观测器SMO,获取电机角度与转速信息。之间的误差来设计滑膜观测器,并通过该误差。

小胡同学的工程师学习之路 1万+

在虚拟机上搭建FTP服务器

chroot_list_file=/etc/vsftpd/chroot_list # 对chroot_list下用户限制。[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #打开配置文件。# 指定用户的shell: -s /usr/bin/nologin。# 在配置文件中找到以下几行代码, 去掉注释(去掉 "#"号)# 指定用户主目录:/data/ftp/ftpuser -M。(2)修改配置文件,路径/etc/vsftpd/ 下的文件。

weixin_70753380的博客 3209

挑战高司令,我发现Java可以new一个接口!

接口只是定义了一个标准,很多类可以实现这个接口: List list = new ArrayList(); // 实例化的是ArrayList这个类 List list = new Vector(); // 实例化的是Vector这个类 其中:ArrayList 和 Vector 这两个类都实现了List接口 A instanceof B 的作用: 1、 对象A是否为B类的对象:objA instanceof B.class 2、A对象是否实现了B接口 我们平时经常用到以下代码:接口可被

JavaEdge全是干货的技术号 1651

高功率半导体叠阵激光准直

摘要:研究针对高功率半导体激光器叠阵的光束整形问题,通过Zemax软件模拟5个巴条(间隔1.81mm)的LD阵列(总功率300W)。采用非序列模式建立模型,设置慢轴/快轴发散角分别为5°和19.5°,并配置包含19个发光点的巴条结构。通过S-TIH53材质的快轴准直镜(焦距0.6mm)和慢轴准直镜(焦距2.88mm)进行光束整形,有效降低了快慢轴发散角。仿真结果表明该方法能显著改善叠阵激光的光束质量,为高亮度光纤耦合提供了解决方案。

Zhaxibamao的博客 915

java中不能被new的类

1 、 抽象类 abstract class 2 、 接口 interface 3 、 无公开的构造方法的类 private 4 、 虚接口 abstract interface

Jmutor 1960

SAP(ERP)工艺路线(Routing)业务视角解析

工艺路线(Routing)也是PP模块,即生产制造模块中最重要核心主数据之一,也是ERP(SAP)顾问,必需从业务与系统深入掌握的重要主数据,它也是整个生产计划与生产流程的重要基础。因为执行步骤只是操作层面的认知,业务顾问需要从业务本质上去理解它,要真正从业务视角理解工艺路线的业务价值,而不仅仅是操作层面的认知。因此将工艺路线理解为“有以上业务本质的理解,然后进到SAP系统中,就容易理解工艺路线(Routing)的每一组成部分结构与功能了,本质就是理解制造企业如何将设计意图转化为物理现实的编码规则。

m0_45197968的博客 1501

人形机器人开源资源大盘点(四):硬件开源平台

开源人形机器人平台推动技术民主化 本期聚焦四大开源人形机器人平台:斯坦福的ToddlerBot以6000美元低成本实现30自由度运动,支持仿真到现实的零样本迁移;法国Reachy2被HuggingFace收购,融合开源AI与硬件,适配医疗、工业等场景;国内OriginMan基于ROS2全开源,集成大模型能力,支持深度改造;OAN框架则为经典NAO机器人注入开源活力,扩展交互功能。这些平台通过不同路径降低研发门槛,推动人形机器人技术走向开放共享的未来。

Studying…… 370

Java 类.this含义与.new

类.this用在内部类中 用于获取外部类对象的引用 public class JavaTest { public static void main(String[] args) { JavaTest t=new JavaTest(); A a=t.new A(); a.run(); System.out.println(t); } public void run(){ Sy

doublecj的专栏 587

图神经网络实战(2)——图论基础

图论 (Graph theory) 是数学的一个基本分支,涉及对图研究。图是复杂数据结构的可视化表示,有助于理解不同实体之间的关系。图论提供了大量建模和分析现实问题的工具,如交通系统、社交网络和互联网等。在本节中,将介绍图论的基本原理,主要涉及三个方面:图属性、图概念和图算法。

盼小辉丶的博客 1万+

抽象接口的简单实现(纯虚类)

 纯虚函数 #include "iostream.h"class shape{public:virtual  void draw()=0;};class circle:public shape{ void draw() {  cout }};shape* GetShape(){ return new circle;}void main(){  shape* pshape = Get

xujianxin's 优快云 Blog 811

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++多重继承与钻石继承:二义性、内存布局与工程实践指南

在C++面向对象编程中,继承是实现代码复用的核心机制。多重继承允许一个类从多个基类派生,但这也引入了复杂的名称查找与二义性问题。其技术价值在于能够组合多个类的功能,实现更灵活的设计,例如模拟现实世界中的多重角色。然而,当多个基类拥有同名成员时,编译器无法确定具体调用哪个版本,导致访问歧义。在更复杂的钻石继承场景中,同一基类在派生类中存在多份副本,引发数据冗余与不一致。为解决这些问题,C++提供了虚继承机制,通过虚基类指针和虚基类表确保共享基类子对象唯一,但会带来额外的空间与时间开销。在实际工程中,应优先考虑

congsikuai0611的博客 302

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++依赖倒置原则:解耦代码、提升可测试性与可维护性的核心设计思想

在软件工程中,模块间的紧耦合是导致代码难以维护、测试和扩展的常见问题。依赖倒置原则作为SOLID设计原则的重要组成部分,通过引入抽象层来反转传统的依赖关系,使得高层模块和低层模块都依赖于抽象而非具体实现。这一设计思想的核心价值在于降低模块间的耦合度,提升代码的灵活性和可测试性。在C++工程实践中,通过定义纯虚接口类、结合依赖注入技术,可以构建出高度可配置和可替换的组件架构。无论是构建微服务、实现单元测试隔离,还是应对快速变化的需求,依赖倒置都为构建高质量、易维护的C++系统提供了坚实的理论基础和实践路径,是

weixin_30820077的博客 356

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++11类设计核心:override、final与可变参数模板深度解析

在面向对象编程中,类的接口一致性与继承安全性是系统稳定性的基石。C++11通过引入编译期契约机制(如override)和继承控制语法(如final),将原本依赖人工校验的虚函数覆盖逻辑转化为强制性语法检查,显著降低未定义行为风险;同时,可变参数模板突破了传统模板的静态类型限制,使类能以类型安全的方式接收任意数量、任意类型的参数,支撑元编程与泛型容器构建。这些特性共同构成现代C++类设计的底层范式——从运行时多态保障转向编译期语义约束,广泛应用于事件总线、配置管理、日志框架等工程场景。本文聚焦override

weixin_33806300的博客 403

MITK中编辑器Tab窗口的实现

本文分析了BlueBerry框架的呈现层实现架构,其核心是模型树与呈现分离的设计理念。系统分为五层:模型层(PartStack维护部件容器)、呈现抽象层(TabbedStackPresentation定义平台无关接口)、折叠器抽象层(PresentablePartFolder粘合部件与标签)、Qt实现层(NativeTabFolder等具体控件)和内容控件层。关键机制包括:通过contentProxy占位实现叠加式切换而非reparent、QCTabBar子类实现标签同步管理、Tweaklet适配层实现SW

beibeix2015的博客 331

C++模板实战指南:从函数模板到元编程的工程应用

泛型编程是C++的核心范式之一,其核心思想是通过参数化类型来编写与具体类型无关的通用代码。其原理在于编译器在编译期根据传入的具体类型进行代码实例化,实现静态多态,避免了运行时开销。这种技术价值在于极大提升了代码的复用性和类型安全性,同时为高性能计算和通用库开发奠定了基础。应用场景广泛,从实现通用算法(如快速幂、八大排序算法)到构建通用数据结构(如智能指针、容器),再到编译期计算和类型推导,都离不开模板技术。本文以C++模板为核心,深入探讨了函数模板、类模板、可变参数模板等关键特性,并结合快速幂算法、排序算法

weixin_33798152的博客 311

C++ 继承 多态 组合 从运用到底层原理详解!草履虫也能轻松看懂

本文详细讲解了C++面向对象编程中的继承、多态和组合三大核心概念。继承部分介绍了基本语法、访问权限、构造析构顺序等;多态部分阐述了虚函数机制、纯虚函数、对象切片等;组合部分则分析了强组合和弱组合的实现方式。文章还对比了组合与继承的优缺点,强调"优先使用组合"的设计原则。

我的博客主要是用来给我自己复习的,主要是上传一些知识点,小型的项目和功能模块,如果有什么问题或错误麻烦联系我! 3038

C++单例模式深度解析:从线程安全到现代实现与框架应用

单例模式是一种创建型设计模式,其核心原理是通过私有化构造函数和静态访问方法,确保一个类在整个应用程序生命周期中仅有一个实例。这一机制在资源共享、状态统一管理和避免重复创建开销等场景中具有重要技术价值,尤其适用于配置管理器、日志系统、数据库连接池等需要全局唯一访问点的组件。在多线程环境下,单例模式的线程安全实现成为关键挑战,涉及双重检查锁定、内存序等底层概念。随着现代C++标准的发展,局部静态变量初始化、std::call_once等特性提供了更优雅的解决方案。在框架开发中,单例模式常被用于消息总线等核心基础

weixin_34268843的博客 352
上一篇: android错误
下一篇: 关于csdn一篇文章java c++多态对纠正(红色字体为纠正)
hellochenlian
博客等级 码龄17年 629粉丝 295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellochenlian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值