C#--设计模式(策略模式)

策划的想法是千变万化,反正我是已经体验过了的,以前做湖南省博物馆行走项目的时候,第一件事是问清楚策划的需求,可问清楚有什么用了,到最后一样的是改需求。例如攻城车怎样获胜的方式。不提了,只有做大的项目的时候,你才会知道设计模式会有多么重要了。时刻谨记大佬的话,需求是不断会变的,你要怎样应对。
一、策略模式:修改一个值的不同方案,做到对修改关闭,对扩展开放。
在这里插入图片描述

public interface IStrategy{

    int AddBloodCal(int _level);
    int ReduceBloodCal(int _level);
    int AddExtraBlood(int _level);
}
public class StrategyA : IStrategy {
    public int AddBloodCal(int _level)
    {
        if (_level > 0 )
        {
            int temp= (_level - 1) * 3;
            return (temp < 10) ? temp : _level;
        }
        return _level;
    }

    public int AddExtraBlood(int _level)
    {
        int temp = _level + 2;
        return (temp<10)?temp :_level;
    }

    public int ReduceBloodCal(int _level)
    {
        return _level - 1;
    }
}
public class StrategyB : IStrategy {
    public int AddBloodCal(int _level)
    {
        if (_level > 0 && _level <= 10)
        {
            int temp = (_level - 1)*2;
            return (temp < 10) ? temp : _level;
        }
        return 0;
    }

    public int AddExtraBlood(int _level)
    {
        int temp = _level +1;
        return (temp < 10) ? temp : _level;
    }

    public int ReduceBloodCal(int _level)
    {
        return _level - 3;
    }
}
public class ConcreateStrategy
{
    private IStrategy strategy;
    private int level;
    public ConcreateStrategy(IStrategy _strategy,int _level)
    {
        strategy = _strategy;
        level = _level;
    }
    public void Add()
    {
        level = strategy.AddBloodCal(level);
    }
    public void Reduce()
    {
        level = strategy.ReduceBloodCal(level);
    }
    public void Extra()
    {
        level = strategy.AddExtraBlood(level);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestStrategy : MonoBehaviour {
	// Use this for initialization
	void Start () {
        ConcreateStrategy strategy = new ConcreateStrategy(new StrategyA(),5);
        strategy.Add();
        strategy.Add();
        strategy.Add();
        strategy.Extra();
        strategy.Reduce();

    }
}

做的不好,可以回复下,可以多交流交流。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值