单例模式的概念:
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
关键点:
1)一个类只有一个实例 这是最基本的
2)它必须自行创建这个实例
3)它必须自行向整个系统提供这个实例
懒汉模式(类加载时不初始化)
public static BaseResultCtrl getLoginCtrl() {
if (LOGIN_CTRL == null) {
synchronized (BaseResultCtrlFactory.class) {
if (LOGIN_CTRL == null) {
LOGIN_CTRL = new BaseResultCtrl();
LOGIN_CTRL.setType(BaseResultCtrlConstants.TYPE_DIALOG);
LOGIN_CTRL.setDialogTitle("未登录");
LOGIN_CTRL.setDialogContent("您还未登录,请先登录");
BaseModuleDto baseModuleDto = new BaseModuleDto();
BaseRouteInfoDto baseRouteInfoDto = new BaseRouteInfoDto();
baseRouteInfoDto.setSdkModuleFlag(false);
baseRouteInfoDto.setRoute(BaseModuleConstants.ROUTE_LOGIN);
baseRouteInfoDto.setType(BaseModuleConstants.TYPE_NATIVE);
baseModuleDto.setRouteInfo(baseRouteInfoDto);
BaseDialogBtnDto b2 = new BaseDialogBtnDto();
b2.setText("确认");
b2.setModule(baseModuleDto);
LinkedList<BaseDialogBtnDto> dialogBtnList = new LinkedList<BaseDialogBtnDto>();
dialogBtnList.add(b2);
LOGIN_CTRL.setDialogBtnList(dialogBtnList);
}
}
}
return LOGIN_CTRL;
}
1)构造函数定义为私有—-不能在别的类中来获取该类的对象,只能在类自身中得到自己的对象
2)成员变量为static的,没有初始化—-类加载快,但访问类的唯一实例慢,static保证在自身类中获取自身对象
3)公开访问点getInstance: public和synchronized的—–public保证对外公开,同步保证多线程时的正确性(因为类变量不是在加载时初始化的)