标签:des style blog os java ar for 数据 2014
在一个类中我们经常会下定义一些类型码,如:
public static final int INVALID=0; public static final int VALID=1;
我们可以将这些数值转换为一个类
只有当类型码是纯粹数据时(类型码不会在Switch语句中引起行为的变化时),你才能以类来取代它
Student
package com.demo.refactor.codetype.before; public class Student { private int id; private String name; /** *状态:0,有效,1无效 */ private int status ; public static final int INVALID=0; public static final int VALID=1; public Student(int id, String name, int status) { super(); this.id = id; this.name = name; this.status = status; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", status=" + status + "]"; } }
test:package com.demo.refactor.codetype.before; public class StudentTest { /** * @param args */ public static void main(String[] args) { Student student=new Student(1, "张三", Student.VALID); System.out.println(student); } }
StatusCode
package com.demo.refactor.codetype.after; public class StatusCode { public static final StatusCode invalid=new StatusCode(0); public static final StatusCode valid=new StatusCode(1); public static final StatusCode[] codes={invalid,valid}; private int code; private StatusCode(int code) { this.code = code; } /** * @param index * @return */ public static StatusCode create(int index){ return codes[index]; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } @Override public String toString() { return "StatusCode [code=" + code + "]"; } }
Student
package com.demo.refactor.codetype.after; public class Student { private int id; private String name; private StatusCode code; public Student(int id, String name, StatusCode code) { this.id = id; this.name = name; this.code = code; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCode() { return code.getCode(); } public void setCode(int index) { this.code =StatusCode.create(index); } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", code=" + code + "]"; } }
StudentTest
package com.demo.refactor.codetype.after; public class StudentTest { /** * @param args */ public static void main(String[] args) { Student stu=new Student(1, "李四", StatusCode.invalid); System.out.println(stu); } }
重构之2.Replace Type Code with Class(以类取代类型码)
标签:des style blog os java ar for 数据 2014
原文地址:http://blog.csdn.net/wobendiankun/article/details/39189589