使用面向对象技术替代switch-case和if-else
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 | |||||||||||
举个例子。
Method.java
类Method中,存在四个状态Post、Get、Put和Delete。有一个switch-case判断,用于输出四种方法的描述信息;两个if-else判断,分别判断方法是否安全(只有Get方法是安全的),方法是否需要密码(只有Post方法不需要密码)。
1.使用继承子类多态
使用继承子类多态的方式,通常对于某个具体对象,它的状态是不可改变的(在对象的生存周期中)。
![]() 现在使用四个子类分别代表四种类型的方法。这样就可以使用多态将各个方法的具体逻辑分置到子类中去了。
在抽象基类Method中可以提供创建子类实例的静态方法,当然也可以使用Simple
Factory模式。对于getMethod()方法,延迟到子类中实现;对于safeMethod()方法和passwordRequired()方法,提供一个默认的实现,这个实现应该符合绝大部分子类的要求,这样的话,对于少数不符合默认实现的子类只需override相应方法即可。
<<abstract>>Method.java
四个子类分别继承和override相应的方法。
PostMethod.java
GetMethod.java
PutMethod.java
DelMethod.java
2.使用state模式
如果希望对象在生存周期内,可以变化自己的状态,则可以选择state模式。
![]() 这里抽象状态为一个接口MethodType,四种不同的状态实现该接口。
<<interface>>MethodType.java
Post.java
Get.java
Put.java
Delete.java
|




