当前位置: 首页 > news >正文

做软件网站/百度seo排名曝光行者seo

做软件网站,百度seo排名曝光行者seo,完善爱心服务网站建设的意义,移动端网站提交提交介绍 工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。 同种类称为同等级,也就是说,工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工…

介绍

工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。

同种类称为同等级,也就是说,工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又生产洗衣机或空调,大学既有软件专业又有生物专业等。

抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族。

定义

是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

代码实现

下面就以生活中 “绝味” 连锁店的例子来实现一个抽象工厂模式。例如,绝味鸭脖想在江西南昌和上海开分店,但是由于当地人的口味不一样,在南昌的所有绝味的东西会做的辣一点,而上海不喜欢吃辣的,所以上海的所有绝味的东西都不会做的像南昌的那样辣,然而这点不同导致南昌绝味工厂和上海的绝味工厂生成所有绝味的产品都不同,也就是某个具体工厂需要负责一系列产品(指的是绝味所有食物)的创建工作,下面就具体看看如何使用抽象工厂模式来实现这种情况。

/// <summary>/// 下面以绝味鸭脖连锁店为例子演示下抽象工厂模式/// 因为每个地方的喜欢的口味不一样,有些地方喜欢辣点的,有些地方喜欢吃不辣点/// 客户端调用/// </summary>class Client{static void Main(string[] args){// 南昌工厂制作南昌的鸭脖和鸭架AbstractFactory nanChangFactory = new NanChangFactory();YaBo nanChangYabo = nanChangFactory.CreateYaBo();nanChangYabo.Print();YaJia nanChangYajia= nanChangFactory.CreateYaJia();nanChangYajia.Print();// 上海工厂制作上海的鸭脖和鸭架AbstractFactory shangHaiFactory = new ShangHaiFactory();shangHaiFactory.CreateYaBo().Print();shangHaiFactory.CreateYaJia().Print();Console.Read();}}/// <summary>/// 抽象工厂类,提供创建两个不同地方的鸭架和鸭脖的接口/// </summary>public abstract class AbstractFactory{// 抽象工厂提供创建一系列产品的接口,这里作为例子,只给出了绝味中鸭脖和鸭架的创建接口public abstract YaBo CreateYaBo();public abstract YaJia CreateYaJia();}/// <summary>/// 南昌绝味工厂负责制作南昌的鸭脖和鸭架/// </summary>public class NanChangFactory : AbstractFactory{// 制作南昌鸭脖public override YaBo CreateYaBo(){return new NanChangYaBo();}// 制作南昌鸭架public override YaJia CreateYaJia(){return new NanChangYaJia();}}/// <summary>/// 上海绝味工厂负责制作上海的鸭脖和鸭架/// </summary>public class ShangHaiFactory : AbstractFactory{// 制作上海鸭脖public override YaBo CreateYaBo(){return new ShangHaiYaBo();}// 制作上海鸭架public override YaJia CreateYaJia(){return new ShangHaiYaJia();}}/// <summary>/// 鸭脖抽象类,供每个地方的鸭脖类继承/// </summary>public abstract class YaBo{/// <summary>/// 打印方法,用于输出信息/// </summary>public abstract void Print();}/// <summary>/// 鸭架抽象类,供每个地方的鸭架类继承/// </summary>public abstract class YaJia{/// <summary>/// 打印方法,用于输出信息/// </summary>public abstract void Print();}/// <summary>/// 南昌的鸭脖类,因为江西人喜欢吃辣的,所以南昌的鸭脖稍微会比上海做的辣/// </summary>public class NanChangYaBo : YaBo{public override void Print(){Console.WriteLine("南昌的鸭脖");}}/// <summary>/// 上海的鸭脖没有南昌的鸭脖做的辣/// </summary>public class ShangHaiYaBo : YaBo{public override void Print(){Console.WriteLine("上海的鸭脖");}}/// <summary>/// 南昌的鸭架/// </summary>public class NanChangYaJia : YaJia{public override void Print(){Console.WriteLine("南昌的鸭架子");}}/// <summary>/// 上海的鸭架/// </summary>public class ShangHaiYaJia : YaJia{public override void Print(){Console.WriteLine("上海的鸭架子");}}

如果 “绝味”公司又想在湖南开一家分店怎么办呢? 因为湖南人喜欢吃麻辣的,下面就具体看看应用了抽象工厂模式的系统是如何应对这种需求的

/// <summary>/// 如果绝味又想开一家湖南的分店时,因为湖南喜欢吃麻的/// 所以这是有需要有一家湖南的工厂专门制作/// </summary>public class HuNanFactory : AbstractFactory{// 制作湖南鸭脖public override YaBo CreateYaBo(){return new HuNanYaBo();}// 制作湖南鸭架public override YaJia CreateYaJia(){return new HuNanYajia();}}/// <summary>/// 湖南的鸭脖/// </summary>public class HuNanYaBo : YaBo{public override void Print(){Console.WriteLine("湖南的鸭脖");}}/// <summary>/// 湖南的鸭架/// </summary>public class HuNanYajia : YaJia{public override void Print(){Console.WriteLine("湖南的鸭架子");}}

此时,只需要添加三个类:一个是湖南具体工厂类,负责创建湖南口味的鸭脖和鸭架,另外两个类是具有湖南口味的鸭脖类和鸭架类。从上面代码看出,抽象工厂对于系列产品的变化支持 “开放——封闭”原则(指的是要求系统对扩展开放,对修改封闭),扩展起来非常简便,但是,抽象工厂对于添加新产品这种情况就不支持”开放封闭 “原则,这也是抽象工厂的缺点所在。

优缺点

抽象工厂模式很难支持新种类产品的变化。这是因为抽象工厂接口中已经确定了可以被创建的产品集合,如果需要添加新产品,此时就必须去修改抽象工厂的接口,这样就涉及到抽象工厂类的以及所有子类的改变,这样也就违背了“开发——封闭”原则。

知道了抽象工厂的优缺点之后,也就能很好地把握什么情况下考虑使用抽象工厂模式了。

http://www.jmfq.cn/news/4900357.html

相关文章:

  • 电子商务网站建设课设/短视频推广平台
  • 做网站不带优化的吗/爱站工具包官网
  • 重庆市建设工程信息网站/网络营销方案设计范文
  • 域名访问不了织梦网站/百度下载安装到桌面上
  • 浅析b2c电子商务网站的建设/网站下载免费软件
  • 视频网站应该怎么做/苏州疫情最新通知
  • 北京网站建设华网天下科技/企业网络搭建
  • 武汉seo公司排名/东莞seo优化排名推广
  • 做外贸做网站/在哪里可以免费自学seo课程
  • 网站建设邀请函/网络推广员是干什么的
  • 重庆网站建设推荐/北京seo教师
  • 链接网站logo/自媒体是什么
  • php做的网站预览/企业seo顾问服务阿亮
  • 建网站自己做服务器/网络平台怎么创建需要多少钱
  • 浅谈幼儿园网站的建设与管理制度/自己怎么做百度推广
  • 临漳企业做网站推广/百度大数据查询怎么用
  • 桂林卖手机网站/网站一键收录
  • 武汉论坛网/吴中seo网站优化软件
  • 青岛专业做外贸网站/免费b站推广网站在线
  • 新建南昌网站建设公司/长春seo按天计费
  • 电子商务平台网站源码/口碑营销成功案例有哪些
  • 微信朋友圈做网站推广赚钱吗/关键词优化排名软件哪家好
  • 建设部颁发的证书网站/如何进行品牌宣传与推广
  • 怎么做网站适配/怎样在平台上发布信息推广
  • 临沂网站设计/做关键词优化的公司
  • 网站建设和网络优化/seo从零开始到精通200讲解
  • 重庆大学建设管理与房地产学院网站/一手app推广接单平台
  • 使用iis6搭建网站/北京朝阳区优化
  • wordpress仿p站主题/百家港 seo服务
  • 哈尔滨信息网免费招聘/长沙seo霜天