标签:turn 个人 工厂模式 消费者 res create over 思想 封装
class Program { static void Main(string[] args) { //想吃沙县,跑到沙县餐厅去买 Shaxin shaxin=new Shaxin(); Console.WriteLine(shaxin.Buy()); //想吃麦当劳,跑到麦当劳餐厅去买 MacDonald macDonald = new MacDonald(); Console.WriteLine(macDonald.Buy()); Console.ReadLine(); } } /// <summary> /// 沙县餐馆 /// </summary> public class Shaxin { public string Buy(){return "飘香拌面!";} } /// <summary> /// 麦当劳餐厅 /// </summary> public class MacDonald { public string Buy() { return "麦辣鸡腿包套餐!"; } }
下面使用工厂类实现
class Program { static void Main(string[] args) { //使用工厂类,想要什么类直接用工厂生产 //想吃沙县,跑到沙县餐厅去买 Restaurant restaurant = RestaurantSimpleFactory.CreateRestaurant("沙县"); Console.WriteLine(restaurant.Buy()); //想吃麦当劳,跑到麦当劳餐厅去买 restaurant = RestaurantSimpleFactory.CreateRestaurant("麦当劳"); Console.WriteLine(restaurant.Buy()); Console.ReadLine(); } } /// <summary> /// 抽象出餐馆类 /// </summary> public abstract class Restaurant { public abstract string Buy(); } /// <summary> /// 沙县餐馆 /// </summary> public class Shaxin:Restaurant { public override string Buy(){return "飘香拌面!";} } /// <summary> /// 麦当劳餐厅 /// </summary> public class MacDonald:Restaurant { public override string Buy() { return "麦辣鸡腿包套餐!"; } } /// <summary> /// 简单工厂,根据用户选择的餐馆去买饭 /// </summary> public class RestaurantSimpleFactory { public static Restaurant CreateRestaurant(string type) { Restaurant restaurant = null; switch (type) { case "沙县" :restaurant= new Shaxin();break; case "麦当劳": restaurant=new MacDonald();break; } return restaurant; } }
简单工厂的有点和缺点
优点:1.实现了客户和生产的分离。客户不在关心生产。客户只关心消费就可以了。
2.因为客户和生产的分离,客户端消费代码,可以复制满足不同消费者的需求。
缺点:1.要生成的产品必须是有限的,而且明确的。
2.简单工厂实现了,生产者和消费者的分离,单这一切都是有代理类完成的。如果增加新的产品,还需要修改代理类。和增加新的产品类。如果代理类,挂了,整个客户端就不能使用了。
简单工厂模式存在明显的缺点。下面介绍 工厂方法,解决可以简单工厂模式的问题。
工厂方法
标签:turn 个人 工厂模式 消费者 res create over 思想 封装
原文地址:http://www.cnblogs.com/Blogs-Wang/p/6401743.html