JAVA枚举与设计模式.ppt_第1页
JAVA枚举与设计模式.ppt_第2页
JAVA枚举与设计模式.ppt_第3页
JAVA枚举与设计模式.ppt_第4页
JAVA枚举与设计模式.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java枚举与程序设计,作者:李金峰,枚举 单例模式 责任链模式,1.1一个枚举的小例子,package com.li; public enum WeeKDay MON,TUS,WED,THI,FRI,SAT,SUN; ,1.2枚举概述,关键字enum可以将一组具名的值的有限集合创作成一种新的类型,而这种具名的值可以作为常规的组件使用,1.3 基本函数,valueOf(); name(); Ordinal(); toString();,1.4静态导入,package com.li; import static com.li.WeekDay1.*; public class TestStaticImport public static void main(String args) System.out.println(MON); ,1.5.1向enum中添加新方法1,public 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中添加新方法2,public enum WeekDay3 MON(“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().toLowerCase(); ,1.6实现,public enum WeekDay6 implements Operate MON, TUS, WED, THI, FRI, SAT, SUN; Override public String doSomething() / TODO Auto-generated method stub return null; ,1.7随机选取,public class Enums private static Random rand = new Random(47); public static T random(Class cl) return random(cl.getEnumConstants(); public static T random(T values) return valuesrand.nextInt(values.length); ,枚举 单例模式 责任链模式,2 单例模式,由于枚举的构造函数必须是私有的,所以用它实现单例模式非常简单。,2.1单例实现1,public enum Singleton INSTANCE; private String name; public String getName() return name; public void setName(String name) = name; public static void main(String args) INSTANCE.setName(“DS“); System.out.println(INSTANCE.getName(); ,2.2单例实现2,public 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; public 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 void main(String args) System.out.println(Singleton1.RED.getRedValue(); ,枚举 单例模式 责任链模式,3 责任链模式,责任链(Chain of Responsibility)是以多种不同的方式来解决问题,然后把他们链到一起。当一个请求来时,它遍历这个链,直到链中的某个解决方案能处理该请求。 下面以新入职员工经历的三方面考核为例。 考核一:面试 60分以下 NO 考核二:笔试 60分以下 NO 考试三:绩效 60分以下 NO 每个员工都要经历这三个过程,一项不合格,拒绝转正。,3.1绩效代码,package com.li.thinking.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 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 randomPerformance() 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() Override public boolean hasNext() / TODO Auto-generated method stub return n- 0; Override public Performance next() / TODO Auto-generated method stub return randomPerformance(); Override public void remove() throw new UnsupportedOperationException(); ; ; ,3.2评审代码,package com.li.thinking.chain; public class ReView enum PerformanceHandler 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 (Perfor

温馨提示

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

评论

0/150

提交评论