使用面向对象技术替代switch.docx

上传人:太** 文档编号:86383851 上传时间:2023-04-14 格式:DOCX 页数:8 大小:116.44KB
返回 下载 相关 举报
使用面向对象技术替代switch.docx_第1页
第1页 / 共8页
使用面向对象技术替代switch.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《使用面向对象技术替代switch.docx》由会员分享,可在线阅读,更多相关《使用面向对象技术替代switch.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、使用面对对象技术替代switch-case和if-else在日常开发中,经常会作一些状态推断,用到swich-case与if-else。在面对对象的环境里,有两种方式可以替代它们。一种是使用继承子类的多态,另一种是使 用state模式。它们使用对象的间接性有效地摆脱了传统的状态推断。举个例子在日常开发中,经常会作一些状态推断,用到swich-case与if-else。在面对对象的环境里,有两种方式可以替代它们。一种是使用继承子类的多态,另一种是使 用state模式。它们使用对象的间接性有效地摆脱了传统的状态推断。举个例子。Method, javapackage ;import ;public

2、class Method private int _type;int POST = 0;public static finalpublic static finalpublic static finalint GET = 1;public static finalint PUT = 2;public static final int DELETE = 3;public Method(int type) _type = type;)public String getMethod() throws NoMethodTypeException switch (_type) case POST: re

3、turn This is POST method;case GET:return This is GET method11;case PUT:return This is PUT method;case DELETE:return Thisis DELETE method;default:throw new NoMethodTypeException(); ) )public boolean safeMethod() if (_type = GET) return true;else return false;)public boolean passwordRequired() if (_ty

4、pe = POST)return false;else return true;)类Method中,存在四个状态Post、Get、Put和Delete。有一个switch-case推断, 用于输出四种方法的描述信息;两个if-else推断,分别推断方法是否平安(只有Get方法 是平安的),方法是否需要密码(只有Post方法不需要密码)o1 .使用继承子类多态使用继承子类多态的方式,通常对于某个详细对象,它的状态是不行转变的(在对象的 生存周期中)。现在使用四个子类分别代表四种类型的方法。这样就可以使用多态将各个方法的详细规 律分置到子类中去了。在抽象基类Method中可以供应创立子类实例的静态

5、方法,当然也可以使用Simple Factory模式。对于gtMethod ()方法,延迟到子类中实现;对于safMethod ()方法和 passwordRequired ()方法,供应一个默认的实现,这个实现应当符合绝大局部子类的要 求,这样的话,对于少数不符合默认实现的子类只需。verride相应方法即可。Method. java package ;public abstract class Method public final static Method createPostMethod() return new PostMethod();)public final static M

6、ethod createGetMethod() return new GtMthod();)public final static Mthod cratPutMthod() return new PutMethod();)public final static Method createDeleteMethod() return new DelMethod();)abstract public String getMethod();public boolean safeMethod() return false;)public boolean passwordRequired() return

7、 true;)四个子类分别继承和override相应的方法。PostMethod, javapackage ;public class PostMethod extends Method QOverridepublic String getMethod() return This is POST method;)Overridepublic boolean passwordRequired() return false;)GetMethod.javapackage ;public class GetMethod extends MethodOverridepublic String getMe

8、thod() return nThis is GET method;)Overridepublic boolean safeMethod() return true;)PutMethod.javapackage ;public class PutMethod extends Method Overridepublic String getMethod() return This is PUT method;)DelMethod. javapackage ;public class DelMethod extends MOverridepublic String getMethod() retu

9、rn This is DELETE method;)2.使用state模式假如盼望对象在生存周期内,可以变化自己的状态,那么可以选择state模式。!-endif一这里抽象状态为一个接口 MethodType,四种不同的状态实现该接口。 interfaceMethodType. javapackage ;public interface MethodType String getTypeDescription();String getMethodDescription();boolean isSafe();boolean isRequired();Post, javapackage ;publ

10、ic class Post implements MethodTypepublic String getMthodDscription() return This is POST method;)public String gtTypDescription() return n=POST=n;)public boolean isRequired() return false;)public boolean isSafe () return false;)Get, javapackage ;public class Get implements MthodTyp;public String ge

11、tMethodDescription() return This is GET method11;)public String getTypeDescription() return n=GET=n;)public boolean isRequired() return true;)public boolean isSafe () return true;)Put. javapackage ;public class Put implements MethodTypepublic String getMethodDescription() return This is PUT method;)

12、public String getTypeDescription() return n=PUT=n;)public boolean isRequired() return true;)public boolean isSafe () return false;)Delete, javapackage ;public class Delete implements MethodTypepublic String getMethodDescription() return This is DELETE method;)public String gtTypDscription() return n

13、=DELETE=n;)public boolean isRequired() return true;)public boolean isSafe () return false;)此时,在类Method中保存一个field表示MethodType,在某对象中,可以随时变化四 种的状态(详细见runAIlMthods ()方法)。Method, javapackagepublic class Method private MethodType _type;public Method() _type = null;)public Method(MethodType type) _type = t

14、ype;)public String getMethod() return _type.getMethodDescription(); )public boolean safeMethod() return _type.isSafe();)public boolean passwordRequired() return _type.isRequired();)public void changeType(MethodType type) _typ = type;)public void runAllMethods() MethodType types = new MethodType new

15、Post () , new Get (), new Put(), new Delete() ;for (MethodType type : types) System.out.printin(type.getTypeDescription(); changeType(type);System.out.printin(getMethod();System.out.printin(safeMethod();System, out .printin (passwordR;quirci (); ) ) ) 3.测试在测试类中,分别使用上面3中机制展现结果。它们的结果应当是全都的。Client, jav

16、a package ;public class Client static void print (String s) System.out.printin(s);)static void print(Boolean b) System.out.printin(b);)public static void main(String args) throws NoNtethociTypException print(n=original=n);print(n=POST=n);postl = new (com.zj.original.Method.POST);print(postl.gtMthod(

17、);print(postl.safeMethod();print(postl.passwordRequired();print(n=GET=);getl = new (com.zj . original.Method.GET);print (getl.getMethod();print (getl.safeMethod();print(getl.passwordRequired();print(n=puT=n);putl = new (com.zj.original.Method.PUT);print(putl, getMethod();print(putl, safeMethod();pri

18、nt(putl.passwordRequired();print(n=DELETE=n);dell = new (com.zj . original.Method.DELETE);print(dell.getMethod();print (dell.safeMethod();print(dell.passwordRequired();print(n=subclass=n);print(n=POST=n );post2 =, createPostMethod();print (post2.getMethod();print(post2.safeMethod();print(post2.passw

19、ordRequired();print(=GET=);get2 = com.zj.subclass.Method.createGetMethod();print(get2.getMethod();print(get2.safeMethod();print(get2.passwordRequired();print ( =PUT=);put2 = com.zj . subclass.Method.createPutMethod();print (put2.getMethod();print (put2.safeMethod();print(put2.passwordRequired();print(n=DELETE=H);de 12 =.createDeleteMethod();print(del2.getMethod();print(de12.safeMethod();print(de12.passwordRequired();print(n=state=n );new (), runAHMethods ();)原文出处:中软卓越htt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁