0 0

现在我有这么一个问题想用策略模式实现,可以吗?3

现在有一个类别的变量叫type,还有一个变量叫状态state,我现在写的程序代码如下
public void oneMethod(int type,String state){
if(type==1){
if(state.equals("启动")){
System.out.print("做类别是1,状态为启动的事儿");
}else if(state.equals("运行")){
System.out.print("做类别是1,状态为运行的事儿");
}
}else if(type==2){
if(state.equals("启动")){
System.out.print("做类别是2,状态为启动的事儿");
}else if(state.equals("运行")){
System.out.print("做类别是2,状态为运行的事儿");
}
}
}
我今天看了看策略模式,能抽象具体类消除if else,但都是单一的if else,没有if里面嵌套另外一个if,所

以我想问一下怎么设计能解决这种嵌套if
2012年5月15日 16:33

3个答案 按时间排序 按投票排序

0 0

hello...我个人认为。你目前的这种情况,桥接模式更适合。

2012年8月22日 10:46
0 0

我个人觉得你这个不必使用策略模式,用了反倒显得罗嗦了。策略强调多态,以同一接口不同实现类的方式抽象不同的方法逻辑。但如果就一个方法,只是传参不同而增加的判断用这个觉得没什么必要。下面附一个策略模式的代码,希望对你有帮助

//StrategyExample test application
 
class StrategyExample {
 
    public static void main(String[] args) {
 
        Context context;
 
        // Three contexts following different strategies
        context = new Context(new FirstStrategy());
        context.execute();
 
        context = new Context(new SecondStrategy());
        context.execute();
 
        context = new Context(new ThirdStrategy());
        context.execute();
 
    }
 
}
 
// The classes that implement a concrete strategy should implement this
 
// The context class uses this to call the concrete strategy
interface Strategy {
 
    void execute();
 
}
 
// Implements the algorithm using the strategy interface
class FirstStrategy implements Strategy {
 
    public void execute() {
        System.out.println("Called FirstStrategy.execute()");
    }
 
}
 
class SecondStrategy implements Strategy {
 
    public void execute() {
        System.out.println("Called SecondStrategy.execute()");
    }
 
}
 
class ThirdStrategy implements Strategy {
 
    public void execute() {
        System.out.println("Called ThirdStrategy.execute()");
    }
 
}
 
// Configured with a ConcreteStrategy object and maintains a reference to a Strategy object
class Context {
 
    Strategy strategy;
 
    // Constructor
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }
 
    public void execute() {
        this.strategy.execute();
    }
 
}

2012年6月01日 10:14
0 0

新建一个接口.

public interface StateStrategy {
  public void execute();
}


写一个实现类

public class DefaultStateStrategy implements StateStrategy {
  
  public void execute() {
    //实现你的逻辑
  }
}


最后你的oneMethod改为

public void oneMethod(StateStrategy strategy);

这样你的oneMethod可以不去使用if else.

2012年5月25日 12:07

相关推荐

    java设计模式

    32.1.1 策略模式实现压缩算法 32.1.2 命令模式实现压缩算法 32.1.3 小结 32.2 策略模式VS状态模式 32.2.1 策略模式实现人生 32.2.2 状态模式实现人生 32.2.3 小结 32.3 观察者模式VS责任链模式 32.3.1 责任链模式...

    C#23种设计模式_示例源代码及PDF

    桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关 桥梁模式 联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是 继承关系,从而使两者可以独立的...

    我有外卖研究简报.pdf

    综合来看,“我有外卖”通过硬件+软件的创新模式,正在试图构建一个高效、便捷的外卖生态系统。这种模式的优势在于能够有效提升用户体验和商家服务质量,但同时也必须面对高昂的硬件成本和激烈的市场竞争。随着O2O...

    我有故事,讲给你听 内容型产品的内容分发模式探索.pdf

    以LOFTER为例,用户可以围绕兴趣形成小组,创建和分享内容,而平台则可以通过算法识别这些小组的兴趣点,并据此推送相关的内容,从而形成一个良性循环:优质内容吸引用户,用户兴趣驱动内容分发,分发策略增强用户...

    java二十三种设计模式

    19. 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并使它们可相互替换。 20. 模板方法模式(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 21. 访问者模式...

    购物-我有外卖 v2.6.2.zip

    《购物-我有外卖 v2.6.2.zip》是一个包含安卓应用的压缩包,主要服务于教育教学领域。这个版本号为v2.6.2的更新可能包含了对原有功能的优化、新功能的添加或者系统稳定性提升。在教育场景中,这种应用可能被用于模拟...

    01-02-07-各设计模式总结与对比1

    例如,单例模式确保一个类只有一个实例,常用于配置管理或缓存服务;而工厂模式则提供了创建对象的接口,但具体的实现延迟到了子类。 结构型设计模式如适配器、桥接、组合、装饰器、门面、享元和代理模式,则关注...

    subversion FAQ(常见问题解答)

    - **我的管理员不想让我有一个 Subversion 的 HTTP 服务器,那么如何做我才可以远程使用?** - 如果管理员不允许使用 HTTP 服务器,您可以使用 svnserve 或其他协议(如 SSH)来连接到 Subversion 服务器。 - **...

    “听说想问”中实现深度学习——我所理解的低年级数学课堂上的深度学习文化.pdf

    教师不仅要引导学生理解“15-9=6”的含义,还要让学生能够清晰地表达出他们的计算思路,比如:“我先从15个当中拿出10个,然后从剩下的5个中再拿出9个,因为不够拿,所以我需要从刚才拿走的10个里面再拿一个回来,...

    2021策略词汇大全 互联网黑话

    《2021策略词汇大全》是一份集结了互联网行业及营销领域内广泛使用的专业术语和概念的资料。它不仅为市场营销人员提供了丰富的话术资源,也帮助理解这些词汇背后的战略含义和应用场景。以下是对文档中提及的部分词汇...

    基础信息模块设计模式报告05051

    在基础信息模块的设计中,我们参考并应用了一些常见的设计模式,如工厂模式用于创建对象,观察者模式用于实现事件驱动,单例模式确保系统中只有一个实例等。这些模式能够提高代码的复用性、可维护性和可扩展性。 2....

    如何做好销售工作.pptx

    马斯洛需求理论认为,人的需求可以分为五个层次:生理需求、安全需求、社交需求、尊重需求和自我实现需求。销售工作中,我们需要了解客户的需求,从而提供相应的产品和服务,满足客户的需求。 销售技巧 销售技巧...

    市场竞争策略培训教材.pptx

    市场竞争策略是企业在面对众多竞争对手时,为了获得竞争优势和市场份额而制定的一系列行动计划。这份培训教材主要涵盖了解析竞争者、企业竞争战略的选择以及市场战略的三个核心方面:成本领先战略、差异化战略和集中...

    17如何实现快速发展.doc

    这告诉我们,一个企业要想快速发展,需要深入理解市场,找到自身产品的独特定位,用创新和差异化的商品吸引消费者。 其次,特色服务是企业在同质化竞争中脱颖而出的又一关键。蓝岛百货针对市场需求,在特定时间推出...

    2020ZTE 傅里叶派题 参考答案.

    在给定的资源中,我们关注的是一个与ZTE相关的傅里叶问题的解决方案,它涉及到C++编程、数据结构优化、搜索算法以及剪枝技术。以下是对这些知识点的详细阐述: 1. **C++**: C++是一种强大的、面向对象的编程语言,...

    创新思维沙盘狩猎者.ppt

    在这个环境中,即使企业实现了"人无我有,人有我优"的竞争优势,如果不能持续创新,也可能被新的竞争者颠覆。互联网金融就是一个典型的例子,尽管它是新兴行业,但如果不寻求创新,也将面临在红海中挣扎的命运。 在...

    电商“论贱”血拼 传统书店该何去何从?.docx

    随着电商巨头如亚马逊等的崛起,这些线上平台用它们特有的“论贱”血拼模式吸引着顾客,一时间价格战成为占领市场的杀手锏。图书作为一种特殊的商品,在这样的大环境下,传统书店仿佛被逼到了墙角,岌岌可危。然而,...

    营销新思路——“走光营销” 管理资料.doc

    关键在于找到一个与产品特性紧密相关的消费需求点,并确保它是唯一且与众不同的。 其次,创造一个亮点是"走光营销"的核心。这个亮点就是产品的差异化卖点,它可以是产品的某个独特功能,或者是品牌的故事元素。这个...

Global site tag (gtag.js) - Google Analytics