美文网首页架构算法设计模式和编程理论Java设计模式
大话设计模式(1) --- 简单工厂模式|策略模式

大话设计模式(1) --- 简单工厂模式|策略模式

作者: 官子寒 | 来源:发表于2020-01-12 16:56 被阅读0次

1. 简单工厂模式

简单工厂模式主要用来解决创建实例的问题

简单工厂模式UML
public abstract class CashSuper {
    public abstract int acceptCash(int money);
}
public class CashNormal extends CashSuper {

    @Override
    public int acceptCash(int money) {
        return money;
    }
}
public class CashRebate extends CashSuper {
    private int moneyRate = 0;

    public CashRebate(int moneyRate) {
        this.moneyRate = moneyRate;
    }

    @Override
    public int acceptCash(int money) {
        return money * this.moneyRate;
    }
}
public class CashFactory {
    public static CashSuper getCash(int cashOption) {
        CashSuper cashSuper = null;
        switch (cashOption) {
            case 1 :
                cashSuper = new CashNormal();
                break;
            case 2 :
                cashSuper = new CashRebate(2);
                break;
            default:
                break;
        }
        return cashSuper;
    }
}
public class CashClient {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("请选择结算方式:");
        System.out.println("1 --- 原价");
        System.out.println("2 --- 2倍的价格");
        CashSuper cashSuper = null;
        Scanner scanner = new Scanner(System.in);
        switch(scanner.next()) {
            case "1" :
                cashSuper = CashFactory.getCash(1);
                System.out.println(cashSuper.acceptCash(100));
                break;
            case "2" :
                cashSuper = CashFactory.getCash(2);
                System.out.println(cashSuper.acceptCash(100));
                break;
        }
    }
}
简单工厂模式

2. 策略模式

策略模式是一种定义一系列算法的方法,从概念上来讲,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法与使用算法类之间的耦合

策略模式
public class Context {
    private CashSuper cashSuper;
    public Context (CashSuper cashSuper) {
        this.cashSuper = cashSuper;
    }
    public int acceptCash(int money) {
        return cashSuper.acceptCash(money);
    }
}
public class ContextTest {
    public static void main(String[] args) {
        Context context = new Context(new CashRebate(3));
        System.out.println(context.acceptCash(200));
    }
}
  • 策略模式的Strategy类层次为Context定义了一系列的可供重用的算法或行为,继承有助于析取出这些算法的公共功能
  • 策略模式还有助于简化单元测试,因为每个算法都有自己的类,可以通过自己的接口单独编程
  • 单纯用策略模式,需要在客户端进行switchif判断来创建实例

3. 策略和简单工厂模式结合

  • 将客户端中创建实例的switch部分收到Context
public class Context_Factory {
    private CashSuper cashSuper;
    public Context_Factory (int strategyOption) {
        switch (strategyOption) {
            case 1:
                cashSuper = new CashNormal();
                break;
            case 2:
                cashSuper = new CashRebate(2);
                break;
        }
    }
    public int acceptCash(int money) {
        return cashSuper.acceptCash(money);
    }
}
public class Context_Factory_Test {
    public static void main(String[] args) {
        Context_Factory context_factory;
        Scanner scanner = new Scanner(System.in);
        switch(scanner.next()) {
            case "1" :
                context_factory = new Context_Factory(1);
                System.out.println(context_factory.acceptCash(200));
                break;
            case "2" :
                context_factory = new Context_Factory(2);
                System.out.println(context_factory.acceptCash(200));
                break;
        }

    }
}

相关文章

  • iOS开发之设计模式 - 策略模式

    由《大话设计模式 - 策略模式》的OC和部分Swift的语言转义 策略模式 继上一篇《简单工厂模式》 策略模式,定...

  • 大话设计模式(1) --- 简单工厂模式|策略模式

    1. 简单工厂模式 简单工厂模式主要用来解决创建实例的问题 2. 策略模式 策略模式是一种定义一系列算法的方法,从...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

  • 大话设计模式之_工厂模式

    大话设计模式之_工厂模式 工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static fac...

  • 24种设计模式

    读了大话设计模式一书.暂做总结,有的理解了,有的还不太理解,以后慢慢理解 1.简单工厂模式 2.策略模式 3.装饰...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • 大话设计模式笔记 - 简单工厂模式

    大话设计模式笔记 - 简单工厂模式 总的来说,简单工厂模式就是对封装,继承,多态的基本实现。是面向对象的基本思路。...

网友评论

    本文标题:大话设计模式(1) --- 简单工厂模式|策略模式

    本文链接:https://www.haomeiwen.com/subject/xuiiactx.html