策划的想法是千变万化,反正我是已经体验过了的,以前做湖南省博物馆行走项目的时候,第一件事是问清楚策划的需求,可问清楚有什么用了,到最后一样的是改需求。例如攻城车怎样获胜的方式。不提了,只有做大的项目的时候,你才会知道设计模式会有多么重要了。时刻谨记大佬的话,需求是不断会变的,你要怎样应对。
一、策略模式:修改一个值的不同方案,做到对修改关闭,对扩展开放。
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();
}
}
做的不好,可以回复下,可以多交流交流。