using System; using System.Collections.Generic; using System.Linq; using System.Text; /* * 工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,但是,工厂方法把简单方法的内部逻辑判断移到了客户端代码。 * 工厂方法模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类。 */ namespace LeifengFactory { class LeiFeng { public void Sweep() { Console.WriteLine("Sweep"); } public void Wash() { Console.WriteLine("Wash"); } public void BuyRice() { Console.WriteLine("BuyRice"); } } class Undergraduate : LeiFeng { } class Voluntter : LeiFeng { } interface IFactory { LeiFeng CreateLeiFeng(); } class UndergraduateFactory : IFactory { public LeiFeng CreateLeiFeng() { return new Undergraduate(); } } class VoluntterFactory : IFactory { public LeiFeng CreateLeiFeng() { return new Voluntter(); } } class Program { static void Main(string[] args) { //类似于简单工厂模式的switch语句,如果增加或者修改,修改new后的部分就好 IFactory factory = new UndergraduateFactory(); LeiFeng student = factory.CreateLeiFeng(); student.BuyRice(); student.Sweep(); student.Wash(); } } }