设计模式之策略模式

设想一种场景,小明要去商店买东西,可是他不知道去商店的路线该怎么走,这是他爸爸给了它一锦囊说你不知道怎么走那么你就打开这个锦囊里面会有去商店的办法的,然后小明就拿出爸爸给的锦囊出去了:

package com.djk.celuo;

/**
 * 策略模式
 * @author djk
 *
 */
public class TacticsTest
{
    public static void main(String[] args)
    {
        
        XiaoMing xiaoMing = new XiaoMing();
     
        //策略1
        Tactics tactics = new TacticsOne1();
        //策略2
        Tactics tactics2 = new TacticsOne2();
        
        //锦囊
        Tips tips = new Tips();
        
        //给锦囊放策略1
        tips.setTactics(tactics);
        
        //给小明一个锦囊
       xiaoMing.setTips(tips);
        
        //小明去商店
        xiaoMing.goToShopping();
        
    }
}

/**
 * 策略接口
 * @author djk
 *
 */
interface Tactics
{
    /**
     *去商店的路线
     *
     */
    void goShopping();
}

/**
 * 第一种策略
 * @author djk
 *
 */
class TacticsOne1 implements Tactics
{
    public void goShopping()
    {
        System.out.println("去商店的路线1");
    }
}

class TacticsOne2 implements Tactics
{

    public void goShopping()
    {
        System.out.println("去商店的路线2");
    }
    
}


/**
 * 存放策略的锦囊
 * @author djk
 *
 */
class Tips
{
    private Tactics tactics;

    public Tactics getTactics()
    {
        return tactics;
    }

    public void setTactics(Tactics tactics)
    {
        this.tactics = tactics;
    }
}


/**
 *小明
 * @author djk
 *
 */
class XiaoMing
{
    /**
     * 锦囊
     */

    private Tips tips;
    
    public void goToShopping ()
    { 
        //小明忘记带爸爸给的锦囊了
        if(null == tips)
        {
            System.out.println("忘记带锦囊啦。。。");
            return ;
        }
        
        Tactics tactics = tips.getTactics();
        
        //爸爸没有在锦囊里放策略给了一个空的锦囊啊
        if(null ==tactics)
        {
            System.out.println("给的锦囊是空的啊里面没有放策略啊");
            return ;
        }
        
        tactics.goShopping();
    }

    public Tips getTips()
    {
        return tips;
    }

    public void setTips(Tips tips)
    {
        this.tips = tips;
    }
    
}

这就是我写的一个策略模式。。。。有不对的地方请指出谢谢。。。。。

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 四路20秒声光显示计分抢答器Multisim14仿真源文件+设计文档资料摘要 数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。关键字:开关阵列电路;触发锁存电路;解锁电路;编码电路;显示电路 一、设计目的 本设计是利用已学过的数电知识,设计的4人抢答器。(1)重温自己已学过的数电知识;(2)掌握数字集成电路的设计方法和原理;(3)通过完成该设计任务掌握实际问题的逻辑分析,学会对实际问题进行逻辑状态分配、化简;(4)掌握数字电路各部分电路与总体电路的设计、调试、模拟仿真方法。 二、整体设计 (一)设计任务与要求: 抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示。 设置一个系统清除和抢答控制开关S,该开关由主持人控制。 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效。 (二)设计原理与参考电路 抢答器的组成框图如下图所示。它主要由开关阵列电路、触发锁存电路、解锁电路、编码电路和显示电路等几部分组成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值