所以我们有货物,货物有价格。我想计算一下货物的价格。
第一版(开关):
int getPrice(String name){
switch(name){
case "Apple": return 20;
case "Banana": return 100;
...
}
}第二版(地图):
Map<String, Integer> prices = new HashMap<String, Integer>;
int getPrice(String name){
return prices.get(name);
}那么这个方法(或设计模式)是如何调用的呢?有特别的名字吗?
发布于 2014-02-21 22:37:24
我想说这是查表的一个特例。我不认为它是一种设计模式,因为它们更大、更抽象。这是一个实现细节。
例如,这可以在策略模式中使用:
static KnotStrategy getKnotStrategy(String name) {
switch(name.toLowerCase()) {
case "slip": return new SlipKnot();
case "granny": return new GrannyKnot();
case "bowline" return new BowlineKnot();
default: throw new IllegalArgumentException();
}
}与查找相反:
static final Map<String, Supplier<KnotStrategy>> KNOTS = (
new HashMap<String, Supplier<KnotStrategy>>()
);
static {
KNOTS.put("slip", SlipKnot::new);
KNOTS.put("granny", GrannyKnot::new);
KNOTS.put("bowline", BowlineKnot::new);
}
static KnotStrategy getKnotStrategy(String name) {
Supplier<KnotStrategy> supp = KNOTS.get(name);
if(supp != null) {
return supp.get();
}
throw new IllegalArgumentException();
}但这不是战略模式的一部分。
发布于 2014-02-21 22:09:51
您所描述的不是一个设计模式。这只是实现相同目标的另一种方式。
https://stackoverflow.com/questions/21946188
复制相似问题