单元素枚举类型singleton模块】的更多相关文章

public enum Elvis { INSTANCE; public void leaveTheBuilding() { System.out.println("Whoa baby, I'm outta here!"); } // This code would normally appear outside the class! public static void main(String[] args) { Elvis elvis = Elvis.INSTANCE; elvis…
  Singleton指仅仅被实例化一次的类 [Gamma95].Singleton通常代表无状态的对象,例如函数(第24项)或者本质上唯一的系统组件.使类称为Singleton会使它的客户端测试变得十分困难,因为除非它实现了作为其类型的接口,否则不可能将模拟实现替换为单例.   实现单例的方法有两种. 两者都基于保持构造函数私有并导出公共静态成员以提供对唯一实例的访问. 在一种方法中,该成员是final字段: // Singleton with public final field publi…
实现Singleton(代表本质上唯一的系统组件)的三种方法: 1. 保持私有构造器,导出公有的静态成员,客户端访问该类的唯一实例. 2. 保持私有构造器,公有的成员是静态工厂方法. 3. 单元素的枚举类型已经成为实现Singleton的最佳方法. 前两种方法有两点注意: 1. 享有特权的客户端可以通过反射机制调用私有构造器.如果需要抵御这种攻击,可以修改构造器,让它在被要求创建第二个实例的时候抛出异常. 2. 如果要使其变成可序列化的,需要: (1) implement Serializabl…
建议130:以复数命名枚举类型,以单数命名枚举元素 枚举类型应该具有负数形式,它表达的是将一组相关元素组合起来的语义.比如: enum Week { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 在这里,Week对于星期几来说,具备复数含义.如果我们将Week修改为Day,那么调用的代码会变成如下形式: Day.Monday 它不会比下面的代码更简洁了: Week.Monday 转自:<编写高质量代码改善C#程序…
Inspired by Effective Java. Singleton模式是在编程实践中应用最广泛的几种设计模式之一.以前知道的,实现单例的方法有两种(下面的A.B).刚刚在读<Effective Java的时候>学到一种新的更好的方法(E):单元素的枚举类型.同时通过网上资料也知道了其他两种方法(C.D).最后一种在Java中从1.5版本开始支持,其他语言在验证后说明. A.饿汉式(类加载的时候就创建实例).代码如下: public class MaYun { public static…
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所以JDK 最好下载 JDK 9以上的版本. 89. 对于实例控制,枚举类型优于READRESOLVE 条目 3描述了单例(Singleton)模式,并给出了以下示例的单例类. 此类限制对其构造方法的访问,以确保只创建一个实例: public class Elvis { public static f…
表单元素 1.定义: 表单是提供让读者在网页上输入,勾选和选取数据,以便提交给服务器数据库的工具.(邮箱注册,用户登录,调查问卷等) 2.表单元素(下拉框,输入框……) 3.表单主结构: <form action=""></form> 作用:将数据值提交到后台,起到一个交互作用. 4.表单与表单元素的关系 表单是表单元素的集合体 5.基本结构 <form action="" method=""></for…
单例(singleton)就是一个只实例化一次的类.使类成为单例可能会使它的测试变得困难,因为除非它实现了作为其类型的接口,否则不可能用模拟实现来代替这个单例.下面是几种实现单例的方法: 1.共有静态成员是final类型 // Singleton with public final field public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } } 私有构造器…
1.使用单元素的枚举类型 public enum Singleton implements Serializable { INSTANCE; private String field; public String getField() { return field; } public void setField(String field) { this.field = field; } public void leaveTheBuilding(){ System.out.println("Sin…
Singleton是指仅仅被实例化一次的类.通过被用来代表那些本质上唯一的系统组件,比如窗口管理器或者文件系统. 在http://www.cnblogs.com/13jhzeng/p/5256424.html中,提到了不同情境下Singleton多种实现方法. 使用单例类的方法来实现的Singleton在让其变成可序列化(Serializable)时,仅仅在声明上加上“implements Serializable”是不够的,为了维护并保证Singleton,必须声明所有实例域都是transie…