标识类型模式

定义一个不包含任何方法的接口,用它仅仅来表示一种抽象类型。所有实现该接口的类意味着属于这种类型。

比如定义一个Food接口,其中不包含任何方法:

public interface Food{}//实现该接口的类都是食物类型

鱼肉:

public class Fish implements Food{...}

进食方法:

public void eat(Food food){...}

进食:

Food fish = new Fish();//Fish实现了Food接口,标识其食物类型
eat(fish);//合法
Book book = new Book();//Book未实现Food接口
eat(book);//编译错误

所谓标识类型模式就是借助Java编译器来对传给eat()方法的food参数进行语义上的约束。Food接口被称为标识类型接口,这种接口没有任何方法,仅代表一种抽象类型。在JDK中,有如下两个典型的表示类型接口。

  • java.io.Serializable接口:实现该接口的类的实例可以被序列化
  • java.io.Remote接口:实现该接口的类的实例可以作为远程对象
时间: 2024-10-29 19:11:11

标识类型模式的相关文章

标识类型模式和常量接口模式

标识类型模式 定义一个不包含任何方法的接口,用它仅仅来表示一种抽象类型.所有实现该接口的类意味着属于这种类型. 比如定义一个Food接口,其中不包含任何方法: public interface Food{}//实现该接口的类都是食物类型 鱼肉: public class Fish implements Food{...} 进食方法: public void eat(Food food){...} 进食: Food fish = new Fish();//Fish实现了Food接口,标识其食物类型

与接口相关的设计模式(2):代理模式、标识类型模式及常量接口模式

在上文与接口相关的设计模式(1)中,详细介绍了定制服务模式和适配器模式,下面我们来看第三种与接口相关的模式:代理模式. 代理模式 定义:为对象提供一种代理,以控制对这个对象的访问. 分类: 远程代理(Remote Proxy)-为不同地理的对象提供局域网代表对象.(类似于客户端和服务器端) 虚拟代理(Virtual Proxy)-根据需要将资源消耗很大的对象进行延迟,真正需要的时候才进行创建.(网页中图片的加载,先用一张虚拟的图片进行显示,等图片加载完成后再进行显示) 保护代理(Protect

Java 接口基础知识

一.Java接口基础知识 1, Java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承. 2, 与Java接口相关的设计模式: 1, 定制服务模式 设计精粒度的接口,每个Java接口代表相关的一组服务,通过继承来创建复合接口 2, 适配器模式 当每个系统之间接口不匹配时,用适配器来转换接口 3, 默认适配器模式 为接口提供简单的默认实现 4, 代理模式 为Java接口的实现类创建代理类,使用者通过代理来获得实现类的服务 5, 标识类型模

应用程序框架实战二十:映射层超类型

上一篇介绍了工作单元层超类型的封装演化过程,本文将介绍对Entity Framework映射层超类型的封装. 使用Entity Framework一般需要映射三种类型的对象,即实体.聚合.值对象. 聚合与实体映射的主要区别是:聚合映射单属性标识Id,并需要映射乐观离线锁Version,而实体的标识往往需要映射成复合属性,这样方便物理删除聚合中的实体.Entity Framework通过EntityTypeConfiguration进行实体映射. 值对象以嵌入值模式映射,这需要使用ComplexT

第04章 保护模式入门

1 实模式 1.1 实模式缺点 保护模式强调的是保护,是在Intel 80286中首次出现. 实模式的特点: 实模式下,操作系统和用户程序属于同一特权级. 用户程序所使用的地址都指向真实的物理地址,也就是说逻辑地址等于物理地址 用户程序可以使用任意段基址,修改内存中任意数据. 访问超过64KB数据需要切换段基址 一次只能运行一个程序 共20条地址线,最大可寻址的内存为1MB 为了克服这种不安全的内存管理.处理器厂商,开发出保护模式.物理内存不能直接被程序访问,程序内部的地址需要被转化位物理地址再

02.生成、打包、部署和管理应用程序及类型

使用csc.exe,通过命令行来编译源代码,生成IL代码,如下 csc.exe /out:Program.exe /t:exe /r:MSCoreLib.dll Program.cs 意义:指示C#编译器生成一个名叫Program.exe的可执行文件 MSCoreLib.dll是一个特殊的文件,它包含所有的核心类型:Byte,Char,String,Int32等等,因为操作非常频繁,C#编译器会自动引用该程序集,所以上述的命令行代码可以省略/r开关,也可以使用/nostdlib开关,不去引用该程

<<Javascript模式>>中的九大设计模式

模式一:单体模式 作用:保证一个特定类仅有一个实例,常作为解决某个特定问题而存在的通用且共享(多处方法可使用,作为引用对象)的对象 javascript实现单体问题:每次new一个实例对象后,实例对象之间并不相等,两者为不同对象,非单体对象 实现: ①静态属性实例 在Universe构造函数的静态属性中缓存单个实例(this当前对象) 代码实现: function Universe(){ if(typeof Universe.instance ==="object"){ return

PHP面向对象之标识对象

/* 标识对象模式 这个模式主要功能就是创建sql语句中的wehre条件字符串的,下面直接看代码和注释: */ namespace woo\mapper; //字段对象 class Field { protected $name = null; //字段名称 protected $operator = null; //操作符 protected $comps = array(); //存放条件的数组 protected $incomplete = false; //检查条件数组是否有值 func

JavaScript一个简易枚举类型实现扑克牌

<script type="text/javascript"> /** * 这个函数创建一个新的枚举类型,实参对象表示类的每个实例的名字和值 * 返回值是一个构造函数,它标识这个新类 * 注意,这个构造函数也会抛出异常,不能使用它来创建该类型的新实例 * 返回的构造函数包含名/值对的映射表 * 包括由值组成的数组,以及以个foreach()迭代器函数 */ function enumeration(namesToValues){ //这个虚拟的构造函数式返回值 var en