一以贯之 :把子类看作父类,统一看待
假设用户输入一个电脑品牌,判断该品牌是否存在
1 定义一个抽象"电脑类"
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ComputerBand { public abstract class Computer { public abstract void SayHi(); } }
2 定义两个子类(宏碁和戴尔)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ComputerBand { class Arce:Computer { public override void SayHi() { Console.WriteLine("我是宏碁"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ComputerBand { class Dell:Computer { public override void SayHi() { Console.WriteLine("我是戴尔!"); } } }
3 关键来了,定义一个工厂类,返回值为父类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ComputerBand { public class Factory { public static Computer GetComputer(string brand) { Computer cp = null; switch (brand) { case "arce": cp = new Arce(); break; case "Dell": cp = new Dell(); break; default: break; } return cp; } } }
4 看看如何调用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ComputerBand { class Program { static void Main(string[] args) { Console.WriteLine("请输入要查询品牌!"); string brand = Console.ReadLine(); Computer cp = Factory.GetComputer(brand); if (cp != null) { cp.SayHi(); } else { Console.WriteLine( "输入的电脑品牌不存啊!"); } Console.Read(); } } }
运行效果