黑马程序员_Java基础_枚举 和 单例模式实例
------- android培训、 java培训、期待与您交流! ----------
枚举就是要某个类型的变量的取值只能为若干个固定的值中的一个,
否则编译失败,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,
普通变量的方式在开发阶段无法实现这一目标
条件:
1.使用的构造方法
2.每个元素分别用一个公有的静态成员变量表示
3.可以有若干共有方法,
<strong>public abstract class Weekday {private Weekday(){};public final static Weekday SUN = new Weekday(){@Overridepublic Weekday nextday() {return MON;}};public final static Weekday MON = new Weekday(){@Overridepublic Weekday nextday() {// TODO Auto-generated method stubreturn SUN;}};public abstract Weekday nextday();@Overridepublic String toString() {return this==SUN?"SUN":"MON";}}</strong>
<strong>public class EnumDemo {public static void main(String[] args) {Weekday week1 = Weekday.SUN;System.out.println(week1.nextday()); //输出:MONWeek week = Week.THL; System.out.println(week); //THlSystem.out.println(week.name()); //THLSystem.out.println(week.ordinal()); //4,第四个位置System.out.println(Week.valueOf("SUN")); //SUMSystem.out.println(Week.values().length); //7}}//jdk1.5后可以自定义个枚举对象enum Week{SUN,MON,TUE,WED,THL,FRI,SAT}</strong>
枚举就相当于一个类,其中也可以定义构造方法,成语变量,普通方法和抽象方法
编译器会报错
构造方法必须定义成私有的
//需求:使用枚举制作红绿灯
public class EnumDemo2 {public static void main(String[] args) {TrafficLamp lamp = TrafficLamp.RED;System.out.println(lamp.nextLamp()); //GREEN}}enum TrafficLamp{RED(30){@Overridepublic TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn GREEN;}},GREEN(45){public TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn null;}},YELLOW(5){public TrafficLamp nextLamp() {// TODO Auto-generated method stubreturn RED;}};public abstract TrafficLamp nextLamp();private int time;private TrafficLamp(int time) {this.time = time;}}
单例模式的作用:可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源,系统中只存在一个对象。
我们锁了解到的开发所用到的模式有那些?
1.装饰模式;(灵活,避免继承体系的臃肿,提供更强的功能)
2.代理模式;
3,适配器模式
4,抽象工厂;
实现单例模式的方法有很多,可以使用不同的语言进行编写,我们这就创建两个简单的单例模式 (不同方式)
方法一: (饿汉式)
class Single {private static final Single s = new Single();private Single() {}public static Single getInstance() {return s;}}
方法二:(懒汉式)
使用懒汉式如果是多线程程序,会出现多线程的安全问题,所用我们必须使用同步锁进行操作,防止多线程同时创建多个对象
好处:懒加载(和现在的图片懒加载、Hibernate延时加载)
class Single {private static Single s = null;private Single() {}public static Single getInstance() {if (s == null) {synchronized (Single.class) {if (s == null) {s = new Single();}}}return s;}
}
黑马程序员_Java基础_枚举 和 单例模式实例相关推荐
- 黑马程序员_Java基础_前期准备02-1
---------------------------------------- JavaEE+云物联.期待与您交流!----------------------------------------- ...
- 黑马程序员_Java基础Day05_面向对象之封装(Done)
------- android培训.java培训.期待与您交流! ---------- Day05开始接触到了Java核心部分--"面向对象". 面向对象是一种思考思想,是相对于早 ...
- 黑马程序员_java基础笔记(15)...银行业务调度系统_编码思路及代码
---------- ASP.Net+Android+IOS开发..Net培训.期待与您交流!---------- 1,面试题目:银行业务调度系统 模拟实现银行业务调度系统逻辑,具体需求如下: 银行内 ...
- 黑马程序员_Java基础[16]_多态1
---------- android培训 . java培训 .期待与您交流! ---------- [[多态]] instanceof 定义:某一种事物的多种存在形态 [[instanceof 关 ...
- 黑马程序员_java总结_网络编程基础
----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ 现在总结网络编程.在网络通信中,人们把网络通信分为了多个层.为了方便理解,我 ...
- 黑马程序员_java基础笔记(06)...集合
---------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------- JavaApi(其实就是java给我们提供的已经定义好的对象.工具对象:集合框架) ...
- 黑马程序员_java基础笔记(03)...面向对象
1:面向对象的概念,2 : 类和对象的关系,3 : 封装,4 : 构造函数,5 : this关键字,6 : static关键字, 7 : 单例设计模式,8 : 继承,9 : 抽象类,10 : 接口,1 ...
- 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式
GUI(Graphical User Interface)(图形用户接口):用图形的方式,来 显示计算机操作的界面,这样更方便更直观 CLI(Conmand line User Interface)( ...
- 黑马程序员_Java基础_this,super,static,final关键字
一,this关键字 1,当成员变量和局部变量重名时,可以使用this关键字来区分. this关键字代表的是本类对象,this一般是在一个函数中,哪个对象在调用this所在的函数,this就代表哪个对象 ...
- 黑马程序员_Java面向对象_包
7.包 7.1包(package) 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称是:包名.类名. 包也是一种封装形式. 利用命令行自动生成文件夹格式:D:\jav ...
最新文章
- win7 dll怎么在xp运行_win7电脑安装软件提示缺少vcruntime140.dll如何解决
- python开发工程师面试题-超实用面试必看,Python工程师面试题
- 列举ospf的5种报文类型_9种语言的应用场景,程序员的候选清单,你最看好哪一门语言...
- [云炬创业学笔记]第一章创业是什么测试12
- 场景/故事/story——寻物者发布消息场景、寻失主发布消息场景、消息展示场景、登录网站场景...
- 新Astaroth***病毒可利用杀毒软件窃取数据
- 图片预览------photoswipe 使用
- 服务器虚拟化之-——VMware组件与功能。
- Leetcode算法题(C语言)4--旋转数组
- python用于数据分析的包主要有哪些_大数据中用于硬核数据分析最适合的语言和工具包...
- python-定义类的属性
- 2015年OA选型一览表
- 小议新版GB9706.1-2020的基本性能
- [图像处理][Matlab] fspecial函数详解
- 常见口罩标准细菌过滤效率和呼吸阻力对比
- mac辅助功能授权无效
- 课程表APP开发市场现状分析
- 精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
- nginx cache 总结
- yarn ignore-engines