前提摘要:
世界杯正在如火如荼的进行,代表亚洲出战的日本队在昨天凌晨1:4败给哥伦比亚后,以1平2负的战绩小组垫底出局。主帅扎切罗尼在3场比赛中使用了同一种阵型,效果不佳。如果遇到不同的对手换不同的阵型会不会好点呢?日本队所在的C组四支球队是:日本队、哥伦比亚队、科特迪瓦队、希腊队。用什么阵型呢,世界杯无弱旅,所以最少要用四后卫。第一战对科特迪瓦队,第一战要力争进球,前场不如派上3个人,所以用四三三阵型。第二站对希腊,欧洲球队技术细腻,要派上4个中场,打四四二阵型。最后对哥伦比亚,就用四二三一吧!
即:
结构图:
使用简单工厂模式创建对手类,三个对手分别继承对手类
编写代码:
首先创建父类对手类,然后利用面向对象继承的思想使实际对手继承父类,重写虚方法。然后利用简单工厂模式确定调出哪一个对手的资料。注意封装代码的思想,把客户端和算法的代码分隔开来。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace japan
{
class Program
{
public class Opponent//对手类
{
public virtual string GetName()
{
string name = null;
return name ;
}
public virtual string GetResult()
{
string result = null;
return result;
}
}
//球队类
class 科特迪瓦:Opponent
{
public override string GetName()
{
string name = "科特迪瓦";
return name;
}
public override string GetResult()
{
string result = "使用四三三阵型";
return result ;
}
}
class 希腊 : Opponent
{
public override string GetName()
{
string name = "希腊";
return name;
}
public override string GetResult()
{
string result = "使用四四二阵型";
return result;
}
}
class 哥伦比亚 : Opponent
{
public override string GetName()
{
string name = "哥伦比亚";
return name;
}
public override string GetResult()
{
string result = "使用四二三一阵型";
return result;
}
}
public class OpponentFactory
{
public static Opponent createOpponent(string opponent)
{
Opponent oppo = null;
switch (opponent)
{
case "2":
oppo = new 希腊();
break;
case "1":
oppo = new 科特迪瓦();
break;
case "3":
oppo = new 哥伦比亚();
break;
}
return oppo;
}
}
static void Main(string[] args)
{
Console.Write("日本队小组赛的第几个对手:");
string opponent = Console.ReadLine();
Opponent oppo;
oppo = OpponentFactory.createOpponent(opponent);
//oppo.Continent = "欧洲";
string result = oppo.GetResult();
string name=oppo .GetName ();
Console.WriteLine("您的对手为:"+ name );
Console.ReadLine();
Console.WriteLine("建议使用的阵型为:" + result);
Console.ReadLine();
}
}
}
运行:
要是扎切罗尼比赛前能运行一下这几行代码,没准还能赢一场呢,哈哈!(伪球迷说话是不用负责任滴)