【发布时间】:2020-08-26 07:36:23
【问题描述】:
我有一个带有 switch 语句的代码,并且想要改进设计。
有接口和抽象类方式。
我想知道哪种方式更好,为什么?
我有以下课程:
enum MovieChargeType {regular, new_release }
class Movie {
public MovieChargeType type;
public double get_price(){
switch (type){
case regular: //return regular price
case new_release : // return new_release price }
}
}
所以我决定使用 2 种方式改进设计:
1 方式 - 接口
Interface MovieType{
public double get_price();
}
class RegularMovie implements MovieType{
public double get_price(){
// return regular price
}
}
class NewMovie implements MovieType{
public double get_price(){
// return new price
}
}
class Movie{
public MovieType type;
public double get_price(){
type.get_price();
}
}
2 Way - 抽象类:
abstract class Movie {
public MovieChargeType type;
public abstract double get_price();
}
class RegularMovie extends Movie{
public double get_price(){
// return regular price
}
}
class NewMovie extends Movie{
public double get_price(){
// return new price
}
}
我想知道在这种情况下哪个更好? 我注意到人们倾向于使用接口,但有人可以解释为什么吗?
【问题讨论】:
-
旁注:工作代码的评论......可能最好转到codereview.stackexchange.com(但在发布之前请仔细阅读他们的帮助中心)。附注:了解 java 命名约定。方法名称转到
getPrice()... _ 仅用于 SOME_CONSTANT。 -
Java 命名约定对除常量外的所有内容都使用 camelCase 而不是 snake_case。
标签: java design-patterns polymorphism