设计模式在java中的运用---part 1

呕心整理Java中的12种常用设计模式以及应用场景 策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略,可以使得算法可独立于使用它的用户而变化。使用场景:1. 假设现在某超市有三个等级的会员,普通会员,VIP1,VIP2。2. 在结账的时候,三个登记的会员购买了同一种商品,普通会员不打折,VIP1打9折,VIP2打8折。 阅读详情

 

设计模式在java中的运用

读《java与模式》之一
第 I 条      理解三种工厂模式,关键是工厂方法。(区分factory method和factory method pattern)
【1】          简单工厂模式:
又称静态工厂方法模式,其工厂方法是静态方法。
   
creator必须包含逻辑判断,以决定在何时,创建何种类的实例。Client只有消费的责任。因此,简单工厂分解了责任。
缺点是:可以看到creator只有一个,因此当面对复杂的,层次化的创建问题时未能应当;另外,creator负责所有的创建逻辑,也许会面临责任过重的问题;又,简单工厂模式将判断 何时创建与创建何种对象,这两种逻辑混合在一起了,工厂方法模式解决该问题;再,简单工厂中以静态方法为工厂方法,其问题在于不能被 override (参考 http://blog.youkuaiyun.com/yethyeth/archive/2007/04/19/1570974.aspx ),工厂方法模式解决该问题。
java.text.DateFormat 与 java.text.SimpleDataFormat
    DateFormat.getTimeInstance();
    DateFormat.getTimeInstance(int style);
    DateFormat.getTimeInstance(int style, Locale locale);
    DateFormat是抽象类,上述三个方法都是静态方法,查源码知:三个方法最后创建的是SimpleDateFormat对象,即DateFormat的子类对象。因此,DateFormat即是creator,又是AbstractProduct,SimpleDateFormat是ConcreteProduct。getTimeInstance是工厂方法。
 
【2】          工厂方法模式:
    引入抽象工厂类,由其子类完成产品对象的创建,而不是像在简单工厂中由一个工厂类完成所有产品对象的创建。因此,工厂类可以和产品类形成平行的等级结构。
java.util.Collection接口中定义了创建产品Iterator的工厂方法iterator()。每个继承Collection的子类,有其各自的iterator(),并创建不同类型的具体Iterator。
【3】          抽象工厂模式
对比抽象工厂模式和工厂模式,可以发现在前者,一个具体工厂有多个创建方法(这里是工厂方法,注意工厂方法和工厂方法模式),而后者只有一个创建方法。更进一步,在前者,一个具体工厂对应多个具体产品,而在后者,一个具体工厂对应一个具体产品。这是两者在形式上的区别。
简单工厂模式中,一个工厂类创建所有的产品类;工厂方法模式中,这个工厂类被抽象,由其子类,即具体工厂创建具体产品,且一一对应;抽象工厂模式将创建方法再抽象,一个具体工厂创建多个具体产品,这些具体产品通常被认为是有关联的,即是一个产品族。
 
第 II 条命令模式
请求方发请求要求执行某操作;接收方收到请求执行该操作。
命令的请求与执行被分开,请求方和接收方可以独立演化,因此:
新命令容易添加;
接收方可以否决请求;
容易设计命令队列;
容易实现命令的undo和redo;
容易将命令记录到日志。
关于命令模式的使用:
命令对象的生命期,不受发出命令的请求对象的生命期限制。
命令模式可以支持使用undo和redo,以及veto。前两者要结合Memento模式。
有了命令模式可以支持将操作写入日志,这样便于系统崩溃时重做。
在transaction中使用命令模式,可以增加新的transaction。
将多个命令聚会在一起,即结合Composite模式,可以组成宏命令。
为了复制命令,结合Prototype模式。
一个问题:
可能导致过多的具体命令类的存在。
 
AWT 的事件处理机制。
在该机制中,命令对象(具体命令)实现AWT的listener接口(命令接口)。事件是请求者,组件是接收者。AWT中未将接收者组件的引用放在命令中,而是使用事件委派机制另外管理。先以事件注册的方式指明对某请求,命令和接收者是如何的对应关系。当某事件发生,发出某具体命令,从事先的注册中查找该命令对应的接收者组件,然后调用之。
    AWT使用事件注册/分派机制是必要的,因为不能事先确定事件发出的命令将有多少接收者。在程序中就是使用addListener()动态添加接收者。
 
Swing 的命令 undo 与 redo :
   
第 III 条          Singleton模式与multiton模式
对singleton几点注意:
【1】          三种singleton:饿汉式,懒汉式,登记式。
登记式:
【2】          Singleton类可以分为:有状态、无状态。有状态的singleton可用作状态库repository。属性管理器常使用singleton模式。
【3】          不完全的singleton类:如果singleton类存在public的构造器,那么除了使用工厂方法外(singleton所希望),还是从client调用构造器创建singleton对象。这个singleton就是不完全singleton。
Java.lang.Runtime对象也是singleton模式,每个java应用程序有唯一的Runtime对象( Runtime.getRuntime() )。
java.awt.Toolkit也是singleton模式。
 
Multiton模式是singleton模式的推广:
多例类可以有多个实例;
多例类自己创建、管理自己的实例、向外界提供自己的实例。
Multiton又分:有上限多例类、无上限多例类;有状态、无状态。
为了保存多个实例,multiton类可使用一个聚集对象记录创建的各实例。这与singleton的登记式类似。但是,singleton的登记式的用意是改善singleton不能继承的问题,不论是其中的父类还是子类还是只能有一个实例的。
 
应用案例:见《java与模式》
多例模式与多语言支持、序列键生成器与单例多例模式
第 IV 条          Proxy模式
java.lang.reflect.Proxy和java.lang.reflect.InvocationHandlers现实java的动态代理机制。
java的动态代理机制需要进一步研究:
第 V 条Builder模式
Builder模式可以将一个产品的internal representation与产品的创建过程分开,从而一个创建过程生成具有不同internal representation的产品对象。
builder模式有很多种情况的退化和变化,如builder与director的合并。
 
javamail利用builder模式创建一个待发送的消息,如下片段对message的创建:
第 VI 条          Observer模式
又叫发布/订阅模式(publish/subscribe),多个观察者对象同时监听一个主题对象。当主题对象状态改变时,所有观察者对象收到来自主题对象的通知。
 
java.util.Observer接口和java.util.Observable类是observer模式的完美再现。
AWT,servlet的DEM机制(Delegation Event Mode)。
javax.swing.Timer类
第 VII 条     Composite模式
Composite使client将叶子节点与树枝节点同等对待。
有两种Composite:安全模式和透明模式。前者在Componet中声明管理子类对象的方法;后者在Composite中声明管理子类对象的方法。
AWT和Swing的图形界面的结构是基于Composite的:
第 VIII 条              Bridge模式
将抽象化(Abstraction)与实现化()implementation分脱耦,使得二者可以独立地变化。
     抽象与实现在面向对象系统设计中的重要方式,是实现“开闭原则OCP”的重要武器,通常可以用继承来完成。但继承的缺点是父类与子类的耦合度高,因此经常把继承用组合/聚集来替代。Bridge模式就是如此。
    值得注意的是:Implementor中的OperationImlp()不一定要一一对应于Abstraction的Operation(),实际上两个接口Implementor和Abstraction可以很不一样。要点是:Implementor给出底层操作,而Abstraction给出基于底层的高层操作。
 
    再论OCP:OCP要求对扩展开,对修改闭。抽象化与实现化的最简单方式就是继承。继承可以在子类的层次对扩展开放,而父类层次上也扩展的情况就不能处理了。
因此,为了让父类与子类两个层次上的变化独立,
【1】          各自继承:
【2】          用聚集关联:
这样:两个层次上的变化被隔离了。
设计提示:
【1】          好的设计通常没有多于两层的继承;
【2】          当变化有两个以上的时候,注意区分使用继承还是聚合。
 
Bridge 模式是“对变化封装”原则和组合 / 聚集复用原则的极好范例。
 
AWT的peer架构:
 
JDBC驱动器:
其他驱动器:
很多驱动器软件都是bridge模式,如打印机驱动器。
第 IX 条          Adapter模式
将一个类的接口变成client期望的另一种接口,从而让因接口不同而不能合作的类能够一起工作。
对象的adapter:
类的adapter:
 
java在没有collection框架前(before 1.2)使用Enumeration接口,而之后使用Iterator接口。两个接口具有不同的方法,用adapter匹配:
从Enumeration到Iterator:
从Iterator到Enumeration:
另外的例子:
WINE:在linux上运行windows程序的平台。
MKS Toolkit:在windows上运行unix shell的平台。
 
J2se中存在很多的默认适配器类。
第 X 条   Decorator模式
又名wrapper,对client透明地扩展对象的功能,是继承的一个替代方案。可以最对对象添加功能,而不是对整个类。
 
java的io库详解:
流就是数据的有序排列。
如下是io流的示意。
IO 库的设计原则:
两个对称性:
l         输入、输出对称:InputStream和OutputStream是Byte流输入、输出的两个平行等级结构的根部;Reader和Writer是char流输入、输出的根部。
l         Byte、char对称:InputStream,Reader负责byte、char的输入;OutputStream、Writer负责byte、char的输出。
两个设计模式:
l         装饰模式:因为IO库需要很多的功能组合,继承会造成类爆炸。 IO 库就是由基本的原始流处理器和围绕它们的装饰流处理器(也称链接流处理器)组成的。
l         适配器模式:
 
装饰模式的使用:
输入流:
如上所示的输入流类图中,有四个原始流处理器,其他是装饰流处理器(能接受其他流,并用装饰模式增加了功能)
原始流处理器:
ByteArrayInputStream,FileInputStream,PipedInputStream,StringBufferInputStream
装饰流处理器:
FilterInputStream(BufferedInputStream,DataInputStream,LineNumberInputStream,PushbackInputStream),ObjectInputStream,SequenceStream
上图的装饰器模式结构如下:
又可以抽象为:
对应于输出流:
原始输出流:
ByteArrayOutputStream,FileOutputStream,PipedOutputStream
装饰器输出流:
FilterOutputStream(BufferedOutputStream,DataOutputStream,PrintStream),ObjectOutputStream。
上图的装饰器模式结构;
Reader的装饰模式
原始流处理器:
CharArrayReader,InputStreamReader(FileReader),PipedReader,StringReader
链接流处理器
BufferedReader(LineNumberReader),FilterReader(PushbackReader)
Writer的装饰器模式:
原始流处理器:
CharArrayWriter,OutputStreamWriter(FileWriter),PipedWriter,StringWriter
链接流处理器:
BufferedWriter,FilterWriter,PrintWriter
 
半透明的装饰模式介于装饰模式和适配器模式之间:
理想的装饰器模式增强功能,而不改变接口。但这很难做到,因此常常增加某些方法,这就称为半透明的装饰模式。
适配器模式就是为了将接口不同而功能类似的类统一起来,所以适配器模式改变接口而不改变功能。
半透明的装饰器模式增加了功能,又适当改变了接口(增加),因此是介于上两者间的模式。
 
IO库中的适配器模式:
以 InputStream 体系为例:
Ø         ByteArrayInputStream使用了适配器模式。
ByteArrayInputStream(上图应为ByteArrayInputStream)将byte数组的接口适配为了InputStream流处理器的接口。
Ø         FileInputStream将FileDescriptor适配为了InputStream。
Ø         StringBufferInputStream将String适配为InputStream
以 OutputStream 体系为例:
Ø         ByteArrayOutputStream将Array数组适配为OutputStream
Ø         FileOutputStream将FileDescriptor适配为OutputStream
Ø         StringBufferOutputStream将String适配为OutputStream
PipedOutputStream 将 PipedInputStream 适配为 OutputStream
Ø         PipedOutputStream将PipedInputStream总是一起使用的。
Reader 原始流处理器都是适配器模式
Ø         CharArrayReader ß àChar array
Ø         StringReader ß àString
Ø         InputStreamReader从byte流到char流的适配器
Writer 原始流处理器都是适配器模式
Ø         CharArrayWriter ß àChar array
Ø         StringWrite ß àStringBuffer
Ø         InputStreamWriter从byte流到char流的适配器
PipedWriter 将 PipedReader 适配为 Writer
Ø         两者总是一起使用的。
 
byte 流到 char 流的适配
InputStreamReader是InputStream到Reader的适配



OutputStream是OutputStream到Writer的适配


 


一个例子:
String line;
InputStreamReader reader = new InputStreamReader(System.in);
System.out.println(“some strings”);
BufferedReader bfreader = new BufferReader(reader);
line = bfreader.readLine();
System.out.println(line);
 
InputStreamReader 是适配器, BufferedReader 是装饰器。
 

Java中有哪些常用设计模式?如何应用这些设计模式? Java是一门十分流行的编程语言,在软件开发中,设计模式是十分重要的概念之一。本文将会介绍Java中常用的设计模式和如何应用它们来提高软件开发效率。 一、常用的设计模式 单例模式(Singleton Pattern) 单例模式是指一个类只允许创建一个对象实例。在Java中,可以通过私有化构造函数并使用静态方法来实现单例模式。需要注意的是,多线程环境下需要进行加锁处理。 工厂模式(Factory Pattern) 阅读详情

相关推荐

Java常用设计模式例子

以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看【设计模式】专栏:https://blog.youkuaiyun.com/pjymyself/category_11536665.html

JAVA 23种设计模式示例

Java 23种设计模式说明及案例

ZHANGLIZENG的博客 8052

JAVA设计模式极其应用实例

在java语言中设计模式是一个非常重要的课题,在实际项目开发中的作用也不容小视。这里提供的设计模式资料是我认为最好的资源,即简单又实用。推荐指数10.

Java设计模式:深入解析与应用示例

在这篇博客中,我们研究了10种常用的Java设计模式,希望这些知识能帮助你在日常开发或面试中更好地解决问题。记住,设计模式只是工具。在实际项目中,我们应该根据项目需求和具体情况选择合适的设计模式,而不是强行套用。

沐雨风栉 4078

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

本文提供了一份详细的GMT6.1绘制地形起伏图的保姆级教程,从环境搭建到数据下载,再到核心绘图命令解析,帮助用户避开常见错误。特别适合科研人员和地理信息爱好者快速掌握专业地形图的绘制技巧,提升工作效率。

weixin_42549723的博客 277

Java 中的 23 种设计模式详解

项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

微笑听雨 7万+

怎么用phpstudy制作网站

随着实践的深入,你会逐渐掌握更多高级技巧和技术,让你的网站变得更加完善和吸引人。现在你已经成功设置了你的本地Web服务器环境,接下来我们将指导你如何利用这个环境来创建一个简单的PHP网页项目。为了使网站更加动态且功能丰富,我们需要学会如何让PHP脚本与MySQL数据库交互。为了让网站看起来更专业美观,可以考虑引入CSS样式表来定制网页布局及视觉效果。当你对本地开发的网站感到满意后,下一步就是将其发布到互联网上供他人访问了。让我们进一步扩展我们的网站,加入一个简单的用户注册与登录系统。

2401_87999399的博客 6574

GOF23种设计模式在Java中的应用(part 1)

第二部分:GOF23种设计模式在Java中的应用(part 2) 一、GOF来源及简介 1.1 GOF23种设计模式简介 《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides...

小蜜蜂1010的博客 1274

深度学习之Pytorch---本人踩过的坑(报错总结)第十篇

深度学习之Pytorch安装时遇到的问题—本人踩过的坑(报错总结) 报错一:pip install torchvision 出现“由于目标计算机积极拒绝,无法连接”的问题 解决方案:找到自己浏览器的工具或选项,我的是火狐,具体解决方案如下图 然后找到桌面左下角,点击搜索internet,然后点击internet选项 最后回到Anaconda Prompt命令行输入pip install...

qq_41570307的博客 1914

使用cartographer纯定位替换amcl定位

经过实际使用,发现cartographer定位对于重定位的表现比amcl好。如果机器人的起始位置离原点较远,amcl很难自行重定位到正确的位置,只能手动修改初始位置。然而cartographer定位的表现则很好,在行驶一段距离或原地旋转一段时间后能够正确重定位。

XJ_75的博客 8313

GOF23种设计模式在Java中的应用(part 3)

本文接续:GOF23种设计模式在Java中的应用(part 2) 行为型模式 行为型模式关注系统中对象之间的相互交互.,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11种模式。创建型模式关注对象的创建过程。结构型模式关注对象和类的组织。 行为型模式汇总: ①责任链模式 chain of responsibility pattern ②命令模式 ...

小蜜蜂1010的博客 470

IC618新手避坑指南:从零在Linux上配置Cadence Virtuoso环境(含cds.lib文件详解)

本文详细介绍了在Linux系统上配置Cadence Virtuoso IC618环境的完整指南,特别针对新手常见问题提供解决方案。重点解析了cds.lib文件的关键配置,包括库路径定义和工艺库管理,并分享了高效工作流设置和典型问题排查技巧,帮助工程师快速搭建稳定的EDA设计环境。

weixin_26805597的博客 556

设计模式 读书笔记 part1

设计模式(Design Pattern)是一套被反复使用的、多数人知晓的、经过分类编目的代码的总结,使用设计模式是为了可以重用代码,让代码更容易被他人理解并且提高代码的可靠性。设计模式包含模式名称、问题、解决方案和效果。模式名称方便沟通交流,见名知义。

renjh2012的博客 1093

保姆级教程:用Labelme标注车辆关键点,并一键转成YOLOv8-pose训练格式

本文提供了一份详细的车辆底盘关键点标注教程,从使用Labelme进行标注到一键转换为YOLOv8-pose训练格式的全流程指南。特别针对工业检测和自动驾驶场景,分享了标注规范、格式转换脚本及常见问题解决方案,帮助开发者高效准备训练数据并优化模型性能。

weixin_27419879的博客 309

SAP 系统间 SSO 的真正价值,从 SM59 到可信 RFC 的安全设计

SAP S/4HANA系统间Single Sign-On(SSO)的核心价值在于集中管理通信身份与信任关系,而非仅减少密码输入。传统固定账号密码方式在系统规模扩大后会面临密码管理、审计追踪等挑战。通过SM59配置可信RFC目标系统,结合SSL证书或SAP Trusted System等强认证机制,能有效降低安全凭据暴露风险。SSO配置需配合授权对象、角色管理等建立清晰的信任边界,实现系统间安全通信的同时保持可审计性。这种方案特别适用于Fiori前端与S/4HANA后端等场景,通过可信RFC传递用户身份,避免

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1063

GOF23种设计模式在Java中的应用(part 2)

本文接续part1:GOF23种设计模式在Java中的应用(part 1) 结构型模式 结构型模式: – 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结 构,用来解决更大的问题。 – 分类: • 适配器模式、代理模式、桥接模式、 装饰模式、组合模式、外观模式、享元模式 2.6 适配器模式(Adapter Pattern) 2.6.1 适配器模式定义: 将一个类的接口转...

小蜜蜂1010的博客 771

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

设计模式(五):Spring 框架中的设计模式 (part four)

适配器 装饰 单例 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。 一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨论单例模式。 适配器 当我们需要在给定场景下(也就是给定接口)想要不改变自身行为而又想做到一些事情的情况下(就是我给电也就是接口了,你来做事也就是各种电器),使用适配器设计模式(这里再说一点,就相当于我们再一个规...

scofen的博客 286

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

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

设计模式、系统设计 record part05

行为型。

m0_47505062的博客 1407

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

从零构建Minio分片上传:Java实战中的设计模式与性能优化

本文详细介绍了如何使用Java从零构建Minio分片上传功能,涵盖设计模式应用与性能优化策略。通过分析Minio的putObject实现原理,探讨建造者模式在参数构造中的精妙应用,并提供动态分片算法与线程池调优方案,帮助开发者高效处理大文件上传,显著提升系统性能与稳定性。

silver的专栏 1022

JAVASE part21_JDBC与反射结合、设计模式

二、JDBC与反射结合 三、设计原则 单一职责原则:每个类只负责做一件事开闭原则:对扩展开放,对修改关闭里氏替换原则 接口隔离原则依赖倒置原则: 四、设计模式 设计模式的几个要素设计模式分类:1.常见设计模式简单工厂模式工厂模式单例模式Runtime类模式设计模式 装饰设计模式(扩展对象)2枚举

weixin_64646820的博客 1112

Part1_精讲设计模式_1.6装饰者模式

Part 1 精讲设计模式 1.6 装饰者模式 ...

田宝宝的博客 489

设计模式、系统设计 record part02

软件设计模式1.应对重复发生的问题2.解决方案3.可以反复使用1.本质是面向对象2.优点很多1.创建型-创建和使用分离2.结构型-组合3.行为型-协作5+7+11=23种模式UML-统一建模语言-Unified Modeling Language1.可视化图形化2.各种图(9种图)3.可以同时表示静态信息、动态信息类图就是图形化显式类关联关系。

m0_47505062的博客 1464

第三次学JAVA再学不好就吃翔(part117)--单例设计模式

学习笔记,仅供参考,有错必纠 文章目录多线程单例设计模式饿汉式懒汉式第三种格式Timer类线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内存中只有一个对象呢: 控制类的创建,不让其他类来创建本类的对象; 在本类中定义一个本类的对象; 提供本类对象的公共访问方式。 饿汉式 class Singleton { //1,私有构造方法,其他类不能访问该构造方法了 private Singleton(){} //2,创建本类对象 private

小山羊的学习日志 499

Java知识Part02(协变、接口)

1、协变返回类型 表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型 JavaSE5 和Java较早之前的主要差异就是较早版本强制 导出类只能返回基类返回的类型(基类),而不能返回基类返回的类型的导出类,尽管这个导出类是从基类导出的,因此也应该允许返回。协变返回类型允许返回更具体的导出类。 ...

civilizationV的博客 258
上一篇: 【转贴】公务员考试图形推理热点题型分析
下一篇: Java 认证学习---part 071110
yethyeth
博客等级 码龄21年 140粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值