CSharp: Simple Factory Pattern in donet core 3
/// <summary>
/// 简单工厂模式 Simple Factory Pattern
/// geovindu,Geovin Du edit
/// 动物
/// </summary>
public interface IAnimal
{
/// <summary>
///
/// </summary>
void AboutMe();
}
/// <summary>
/// 简单工厂模式 Simple Factory Pattern
/// geovindu,Geovin Du edit
/// </summary>
public class Dog : IAnimal
{
/// <summary>
///
/// </summary>
public void AboutMe()
{
Console.WriteLine("狗说: 汪汪。我更喜欢吠叫.");
}
}
/// <summary>
/// 简单工厂模式 Simple Factory Pattern
/// geovindu,Geovin Du edit
/// </summary>
public class Tiger : IAnimal
{
public void AboutMe()
{
Console.WriteLine("老虎说:geovindu。我更喜欢打猎.");
}
}
/// <summary>
/// 简单工厂模式 Simple Factory Pattern
/// geovindu,Geovin Du edit
/// </summary>
public class SimpleFactory
{
/// <summary>
///
/// </summary>
/// <returns></returns>
public IAnimal CreateAnimal()
{
try
{
IAnimal intendedAnimal = null;
Console.WriteLine("输入你的选择(0代表狗,1代表虎)");
string b1 = Console.ReadLine();
int input;
if (int.TryParse(b1, out input))
{
Console.WriteLine("你有输入 {0} 数字", input);
switch (input)
{
case 0:
intendedAnimal = new Dog();
break;
case 1:
intendedAnimal = new Tiger();
break;
default:
Console.WriteLine("你已输出错,您必须输入0或1");
break;
//We'll throw a runtime exception for any other choices.
// throw new ApplicationException(String.Format(" Unknown Animal cannot be instantiated."));
}
}
return intendedAnimal;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
}
调用:
//简单工厂模式
Console.WriteLine("*** 简单工厂模式 Simple Factory Pattern Demo.***\n");
IAnimal preferredType = null;
SimpleFactory simpleFactory = new SimpleFactory();
#region The code region that can vary based on users preference.
/*
* Since this part may vary,we're moving the
* part to CreateAnimal() in SimpleFactory class.
*/
preferredType = simpleFactory.CreateAnimal();
#endregion
#region The codes that do not change frequently.
if (object.Equals(preferredType, null))
{
Console.WriteLine("没有选择正确的数字。");
}
else
{
preferredType.AboutMe();
}
#endregion
Console.ReadKey();
输出:
*** 简单工厂模式 Simple Factory Pattern Demo.*** 输入你的选择(0代表狗,1代表虎) 1 你有输入 1 数字 老虎说:geovindu。我更喜欢打猎.
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号