看到一段单例模式的代码,觉得挺有意思,如下:

public abstract class Singleton {    private T mInstance;    protected abstract T create();    public final T get() {        synchronized (this) {            if (mInstance == null) {                mInstance = create();            }            return mInstance;        }    }}

这是单例模式的抽象类,所有单例都需要写这么一坨东西,所以干脆就将其抽象并泛型化,当需要使用单例的时候这么做,先在一个单例管理类中声明单例:

public class SingletonManager {    public static final Singleton STUDENT_INSTANCE = new Singleton() {        @Override        protected Student create() {            // TODO Auto-generated method stub            return new Student("hello student");        }    };    public static final Singleton TEACHER_INSTANCE = new Singleton() {        @Override        protected Teacher create() {            // TODO Auto-generated method stub            return new Teacher("hello teacher");        }    };}

使用单例的时候如下:

public class Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        Student student = SingletonManager.STUDENT_INSTANCE.get();        System.out.println(student.name);        Teacher teacher = SingletonManager.TEACHER_INSTANCE.get();        System.out.println(teacher.name);    }}

更多相关文章

  1. android EditText设置不可写
  2. Android系统配置数据库注释(settings.db)
  3. Android(安卓)Activity的启动
  4. Android调用.NET Webservice报org.ksoap2.serialization.SoapPri
  5. APP开发实战94-Vector静态图的使用
  6. Android(安卓)开发中的倒计时
  7. Android——Activity四种启动模式
  8. Gradle多渠道打包
  9. [APP] Android(安卓)开发笔记 006-使用短信验证SDK进行短信验证

随机推荐

  1. 发布一个基于jquery的无限层级下拉控件
  2. 在Fancybox jquery中打开YouTube视频
  3. 为什么JSLint说这个jQuery中缺少分号?
  4. angular中的jqLite所包含的jquery API
  5. jquery mobile界面数据刷新
  6. SprngMVC整合jquery的json 最简单的例子
  7. Jquery+Aajax 批量上传
  8. jQuery学习笔记--选择器、过滤器片
  9. Bootstrap Multiselect插件使用步骤以及
  10. jquery的function方法中each循环里面判断