24种设计模式--策略模式(strategy)、模板模式(template)

第一部分:策略模式

**灵活的路由、处理不同逻辑。**类似路由不同的推荐逻辑。

1.定义接口:Game
package com.dahan.strategy;

/**
 * 大汉软件
 */
public interface Game {
    void play();
}
2.实现Game接口:
2.1 DNF
package com.dahan.strategy.impl;

import com.dahan.strategy.Game;

/**
 * 大汉软件
 */
public class DNF implements Game {
    @Override
    public void play() {
        System.out.println("DNF");
    }
}
2.2 LOL
package com.dahan.strategy.impl;

import com.dahan.strategy.Game;

/**
 * 大汉软件
 */
public class LoL implements Game {
    @Override
    public void play() {
        System.out.println("LOL");
    }
}
3.引用的上下文:
package com.dahan.strategy;

/**
 * 大汉软件
 */
public class StrategyContext {
    public void play(Game game) {
        game.play();
    }
}
4.测试类
package com.dahan.strategy;

import com.dahan.strategy.impl.DNF;
import com.dahan.strategy.impl.LoL;

/**
 * 大汉软件
 */
public class StrategyTest {
    public static void main(String[] args) {
        StrategyContext strategyContext = new StrategyContext();

        // DNF
        Game game = new DNF();
        strategyContext.play(game);

        // LoL
        game = new LoL();
        strategyContext.play(game);
    }
}
4.1测试结果:

DNF

LOL

第二部分:模板模式 复用策略模式的代码

便于继承重写具体业务操作

1.定义钩子(抽象类):
package com.dahan.strategy;

/**
 * 大汉软件
 */
public abstract class QQSpeed {
    public void play() {
        accelerate();
        nitrogenInjection();
        drift();
    }

    protected void accelerate() {
        System.out.println("加速");
    }

    /**
     * 喷氮气
     */
    protected abstract void nitrogenInjection();

    protected void drift() {
        System.out.println("飘移");
    }
}
2.具体实现类:
package com.dahan.strategy.impl;

import com.dahan.strategy.QQSpeed;

/**
 * 大汉软件
 */
public class QQSpeedOption1 extends QQSpeed {
    @Override
    protected void nitrogenInjection() {
        System.out.println("喷氮气1111");
    }
}
package com.dahan.strategy.impl;

import com.dahan.strategy.QQSpeed;

/**
 * 大汉软件
 */
public class QQSpeedOption2 extends QQSpeed {
    @Override
    protected void nitrogenInjection() {
        System.out.println("喷氮气2222");
    }
}
3.测试类:
package com.dahan.strategy.impl;

/**
 * 大汉软件
 */
public class TemplateTest {
    public static void main(String[] args) {
        QQSpeedOption1 qqSpeedOption1 = new QQSpeedOption1();
        qqSpeedOption1.play();
        System.out.println("==========");       
        QQSpeedOption2 qqSpeedOption2 = new QQSpeedOption2();
        qqSpeedOption2.play();
    }
}
3.1测试结果:

加速

喷氮气1111

飘移

============

加速

喷氮气2222

飘移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值