前提摘要:
世界盃正在如火如荼的進行,代表亞洲出戰的日本隊在昨天凌晨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();
}
}
}
運行:
要是扎切羅尼比賽前能運行一下這幾行代碼,沒準還能贏一場呢,哈哈!(僞球迷說話是不用負責任滴)