首页 > 代码库 > 工厂模式
工厂模式
简单工作模式
面向对象核心思想:封装变化。
个人解释:简单工厂模式,也就是建一个类的工厂类,去生产我们需要的类。
例子:我中午吃饭。我经常吃的有两种麦当劳和沙县。如果没有外卖(工厂类)。那我就要必要,想吃什么跑到那个店里买什么(生产类)。现在有工厂(外卖)类负责生产,我就可以直接在公司买了,然后等着吃。
没有工厂类的时候
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.简单工厂实现了,生产者和消费者的分离,单这一切都是有代理类完成的。如果增加新的产品,还需要修改代理类。和增加新的产品类。如果代理类,挂了,整个客户端就不能使用了。
简单工厂模式存在明显的缺点。下面介绍 工厂方法,解决可以简单工厂模式的问题。
工厂方法
工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。