String TYPE = methodA();
if("A".equals(TPYE))
{
TEXT_VARIABLE = ("'S.Country."+TEXT_VARIABLE+"'");
}
if("B".equals(TPYE))
{
TEXT_VARIABLE = ("'S.Region."+TEXT_VARIABLE+"'");
}
if("C".equals(TPYE))
{
TEXT_VARIABLE = ("'S.Country."+TEXT_VARIABLE+"'");
}
.................如果我有几十个if就只能这样排列下去吗?因为TPYE是String不能用switch.大侠们有什么好办法重构一下这里吗?模板模式?拜托了
if("A".equals(TPYE))
{
TEXT_VARIABLE = ("'S.Country."+TEXT_VARIABLE+"'");
}
if("B".equals(TPYE))
{
TEXT_VARIABLE = ("'S.Region."+TEXT_VARIABLE+"'");
}
if("C".equals(TPYE))
{
TEXT_VARIABLE = ("'S.Country."+TEXT_VARIABLE+"'");
}
.................如果我有几十个if就只能这样排列下去吗?因为TPYE是String不能用switch.大侠们有什么好办法重构一下这里吗?模板模式?拜托了
解决方案 »
- webservice 服务端向客户端传数据 如何实现?
- sql问题 ,各位大侠 帮看看啊
- struts 2.0 textfield标签格式化问题~~~急!!
- 会配置 Struts + Hibernate+ Tomcat5.5 JNDI 的请进!!!! 牛牛快来哇 ~oo~
- 独立钻研的WebService结构,请教一下各位高人,万分感谢!
- 设计实现一个能点对点聊天的Java程序,大家给点思路!?
- WEB打印如何实现分页打印的功能,希望哪个前辈指点。(急!!!)
- ◆◇tomcat启动时经常遇到的问题!!◇◆
- 附件带的是HTML或HTM文件,为什么是在页面显示,而不是提供下载的呢?
- java后台拼接字符串
- 工作快四年的出来晒一下待遇
- JavaWeb程序实现注册码方案
else if
else if
else if
else
一个if抽成一个类..写一个接口,这个接口提供一个方法所有类(if抽成的类)实现这个接口
这个时候采用策略模式的好处就是
当你再新一个类时,不需要改以前的代码,,只需要写个类,实现接口。
如果不采用策略模式的话你就需要在原来的基础上,又加一个if
哪天你需求要改变,,,要去掉其中的一个,,你又得把其中的一个if去掉
LZ可以用 状态模式 ,一个if对应一种状态,具体的内容还得LZ自学哦!
A:Country.
B:Region
这样的话TEXT_VARIABLE 的赋值语句可以写成:
String str = testMap.get(Type);
if(!"".equals(str) && null!=str){
TEXT_VARIABLE = "'S." + str + TEXT_VARIABLE + "'";
}
大概就是这个意思,具体LZ在测试下吧
import java.util.Map;
public class IfTest {
public static void main(String[] args) {
String type = "C";
String TEXT_VARIABLE = ":天津";
Map testMap = new HashMap();
testMap.put("A", "Country");
testMap.put("B", "Region");
testMap.put("C","Province");
testMap.put("D", "City");
String str = (String)testMap.get(type);
if(!"".equals(str) && null!=str){
TEXT_VARIABLE = "'S." + str + TEXT_VARIABLE + "'";
}
System.out.println("TEXT_VARIABLE = " + TEXT_VARIABLE);
}}
不会设计模式学设计模式,会点设计模式滥用设计模式麻烦这位大侠 batey520 用策略模式思想写写?//本人猜想 用这位所说的策略模式来实现//***********context.java*************
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
} public void contextRequest(String s){
strategy.doEquals(s);
}
}
//***************Strategy.java****************
//抽象Equals的接口
public interface Strategy { void doEquals(String s);
}
//***************ConcreteStrategy_*.java******************
//所以if抽像成的类
public class ConcreteStrategy_Region implements Strategy {
String TYPE = methodA();
//定义一下 TEXT_VARIABLE,虽然我没看懂LZ的这个到底是什么的东西,暂且引用一下吧
public void doEquals(String s) {
if(s.equals(TYPE)){TEXT_VARIABLE = ("'S.Region."+TEXT_VARIABLE+"'");}
}
}
public class ConcreteStrategy_Country implements Strategy {
String TYPE = methodA();
//定义一下 TEXT_VARIABLE
public void doEquals(String s) {
if(s.equals(TYPE)){TEXT_VARIABLE =("'S.Country."+TEXT_VARIABLE+"'");}
}
}
//*****************StrategyTest.java********************
public class StrategyTest { /**
* @param args
*/
public static void main(String[] args) {
Strategy strategy_Region = new ConcreteStrategy_Region();
Context context_Region = new Context(strategy_Region);
Strategy strategy_Country = new ConcreteStrategy_Country();
Context context_Country = new Context(strategy_Country );//N多String,我这里只看3个
String s1 = "A";
String s2 = "B";
String s3 = "C"; context.contextRequest_Country(s1);
context.contextRequest_Region(s2);
context.contextRequest_Country(s3);
}}
小弟不才,只能这样实现 策略模式 思想,你看看这个在效率上,在可读性上有LZ的 全if 好吗?重新声明这句话:不会设计模式学设计模式,会点设计模式滥用设计模式寻CSDN老鸟点评。。