JAVA枚举与设计模式

上传人:仙*** 文档编号:181682129 上传时间:2023-01-15 格式:PPT 页数:20 大小:115.52KB
收藏 版权申诉 举报 下载
JAVA枚举与设计模式_第1页
第1页 / 共20页
JAVA枚举与设计模式_第2页
第2页 / 共20页
JAVA枚举与设计模式_第3页
第3页 / 共20页
资源描述:

《JAVA枚举与设计模式》由会员分享,可在线阅读,更多相关《JAVA枚举与设计模式(20页珍藏版)》请在装配图网上搜索。

1、Java枚举与程序设计作者:李金峰作者:李金峰l 枚举l 单例模式l责任链模式1.1一个枚举的小例子 package com.li;public enum WeeKDay MON,TUS,WED,THI,FRI,SAT,SUN;1.2枚举概述 关键字enum可以将一组具名的值的有限集合创作成一种新的类型,而这种具名的值可以作为常规的组件使用1.3 基本函数 l valueOf();l name();lOrdinal();ltoString();1.4静态导入package com.li;import static com.li.WeekDay1.*;public class TestStati

2、cImport public static void main(String args)System.out.println(MON);1.5.1向enum中添加新方法1public enum WeekDay2 MON(1),TUS,WED,THI(4),FRI,SAT,SUN;private int value;private WeekDay2()private WeekDay2(int value)this.value=value;public int getValue()return this.value;1.5.2向enum中添加新方法2public enum WeekDay3 MON

3、(Monday),TUS(Tuesday),WED(Wednesday),THI(Thursday),FRI(Friday),SAT(Saturday),SUN(Sunday);private String week;private WeekDay3(String week)this.week=week;public String getWeek()return this.week;1.6覆盖toString()方法public enum WeekDay5 MON,TUS,WED,THI,FRI,SAT,SUN;public String toString()return name().toL

4、owerCase();1.6实现public enum WeekDay6 implements OperateMON,TUS,WED,THI,FRI,SAT,SUN;Overridepublic String doSomething()/TODO Auto-generated method stubreturn null;1.7随机选取public class Enums private static Random rand=new Random(47);public static T extends Enum T random(Class cl)return random(cl.getEnu

5、mConstants();public static T random(T values)return valuesrand.nextInt(values.length);l 枚举l 单例模式l责任链模式2 单例模式 l由于枚举的构造函数必须是私有的,所以用它实现单例模式非常简单。2.1单例实现1public enum Singleton INSTANCE;private String name;public String getName()return name;public void setName(String name)this.name=name;public static void

6、 main(String args)INSTANCE.setName(DS);System.out.println(INSTANCE.getName();2.2单例实现2public enum Singleton1 RED(255,0,0),GREEN(0,255,0),BLUE(0,0,255);int redValue;int greenValue;int blueValue;private Singleton1(int red,int green,int blue)this.redValue=red;this.greenValue=green;this.blueValue=blue;pu

7、blic int getRedValue()return redValue;public void setRedValue(int red)this.redValue=red;public int getGreenValue()return greenValue;public void setGreenValue(int green)this.greenValue=green;public int getBlueValue()return blueValue;public void setBlueValue(int blue)this.blueValue=blue;public static

8、void main(String args)System.out.println(Singleton1.RED.getRedValue();l 枚举l 单例模式l责任链模式3 责任链模式 l责任链(Chain of Responsibility)是以多种不同的方式来解决问题,然后把他们链到一起。当一个请求来时,它遍历这个链,直到链中的某个解决方案能处理该请求。l下面以新入职员工经历的三方面考核为例。考核一:面试 60分以下 NO 考核二:笔试 60分以下 NO 考试三:绩效 60分以下 NO 每个员工都要经历这三个过程,一项不合格,拒绝转正。3.1绩效代码package com.li.thin

9、king.chain;import java.util.Iterator;public class Performance enum Audition NO,YES1,YES2,YES3,YES4;enum Exam NO,YES1,YES2,YES3,YES4;enum Perform NO,YES1,YES2,YES3,YES4;Audition audition;Exam exam;Perform perform;static long count=0;long id=count+;public String toString()return Performance +id;public

10、 boolean check(Object o)if(o.equals(NO)return false;return true;public String getDetails()String result=toString()+Audition:+audition+Exam:+exam+Perform:+perform;if(result.indexOf(NO)0)result+=-Sorry,you are failed!;else result+=-You are successfull!;return result;public static Performance randomPer

11、formance()Performance p=new Performance();p.audition=Enums.random(Audition.class);p.exam=Enums.random(Exam.class);p.perform=Enums.random(Perform.class);return p;public static Iterable generator(final int count)return new Iterable()int n=count;public Iterator iterator()return new Iterator()Overridepu

12、blic boolean hasNext()/TODO Auto-generated method stubreturn n-0;Overridepublic Performance next()/TODO Auto-generated method stubreturn randomPerformance();Overridepublic void remove()throw new UnsupportedOperationException();3.2评审代码package com.li.thinking.chain;public class ReView enum Performance

13、Handler Audition boolean handle(Performance p)switch(p.audition)case NO:return false;default:return true;,Exam boolean handle(Performance p)switch(p.audition)case NO:return false;default:return true;,Perform boolean handle(Performance p)switch(p.audition)case NO:return false;default:return true;abstract boolean handle(Performance p);static void handle(Performance p)for(PerformanceHandler ph:PerformanceHandler.values()if(ph.handle(p)return;public static void main(String args)for(Performance pf:Performance.generator(10)handle(pf);System.out.println(pf.getDetails();Thank you!作者:李金峰

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!