欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:86383851       资源大小:116.44KB        全文页数:8页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    使用面对对象技术替代switch-case和if-else在日常开发中,经常会作一些状态推断,用到swich-case与if-else。在面对对象的环境里,有两种方式可以替代它们。一种是使用继承子类的多态,另一种是使 用state模式。它们使用对象的间接性有效地摆脱了传统的状态推断。举个例子在日常开发中,经常会作一些状态推断,用到swich-case与if-else。在面对对象的环境里,有两种方式可以替代它们。一种是使用继承子类的多态,另一种是使 用state模式。它们使用对象的间接性有效地摆脱了传统的状态推断。举个例子。Method, javapackage ;import ;public 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: return "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 (_type = POST)return false;else return true;)类Method中,存在四个状态Post、Get、Put和Delete。有一个switch-case推断, 用于输出四种方法的描述信息;两个if-else推断,分别推断方法是否平安(只有Get方法 是平安的),方法是否需要密码(只有Post方法不需要密码)o1 .使用继承子类多态使用继承子类多态的方式,通常对于某个详细对象,它的状态是不行转变的(在对象的 生存周期中)。<!一if !vml一><!一endif 一>现在使用四个子类分别代表四种类型的方法。这样就可以使用多态将各个方法的详细规 律分置到子类中去了。在抽象基类Method中可以供应创立子类实例的静态方法,当然也可以使用Simple Factory模式。对于gtMethod ()方法,延迟到子类中实现;对于safMethod ()方法和 passwordRequired ()方法,供应一个默认的实现,这个实现应当符合绝大局部子类的要 求,这样的话,对于少数不符合默认实现的子类只需。verride相应方法即可。<<abstract>Method. java package ;public abstract class Method public final static Method createPostMethod() return new PostMethod();)public final static Method 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 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 getMethod() 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() return "This is DELETE method")2.使用state模式假如盼望对象在生存周期内,可以变化自己的状态,那么可以选择state模式。<!一if !vml一>!-endif一这里抽象状态为一个接口 MethodType,四种不同的状态实现该接口。 interfaceMethodType. javapackage ;public interface MethodType String getTypeDescription();String getMethodDescription();boolean isSafe();boolean isRequired();Post, javapackage ;public 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 getMethodDescription() 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")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=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 = type;)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 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, java 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();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();print(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.passwordRequired();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

    注意事项

    本文(使用面向对象技术替代switch.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开