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

昆明网站建设价格低学习软件

昆明网站建设价格低,学习软件,ps6做网站点哪里保存,ebay国外网站怎么做一、为什么需要抽象工厂模式? 在工厂模式中,我们需要定义多个继承于共同工厂抽象基类的工厂子类,这些子类负责创建一个对应的对象。工厂模式存在一个缺点就是:每次扩展新的工厂子类,就会增加系统的复杂度。 如果我们…

一、为什么需要抽象工厂模式?

在工厂模式中,我们需要定义多个继承于共同工厂抽象基类的工厂子类,这些子类负责创建一个对应的对象。工厂模式存在一个缺点就是:每次扩展新的工厂子类,就会增加系统的复杂度。

如果我们知道把所有产品(比如车)分为几个产品族(比如自行车族、汽车族),那么工厂子类就对应指定的产品族进行“批量”创建对象。若有新的产品,则工厂子类创建该新产品对象。(工厂子类内部逻辑,类似于简单工厂模式)

抽象工厂模式 ,类似于简单工厂模式和工厂模式混合运用而成的模式。(参考上篇文章“工厂模式”的最后一个代码例子)

优点: 不需要每次定义一个新的产品类时,就要扩展新的工厂子类。工厂子类提供一个产品族中多个对象的创建工作,客户端可以方便使用某个产品族中的对象。

缺点: 产品族扩展难。要增加一个新系列的某一产品,要定义产品抽象类、产品实现类,工厂抽象基类,工厂子类。

【角色】
某系列抽象基类: 用以定义某产品族的特征和行为的抽象接口。
某系列的某产品实现类: 继承某系列抽象基类,用以实现某系列里某产品的特征和行为的具体类。
工厂抽象基类: 用以定义创建对象的特征的抽象接口。特征行为包括提供某系列产品的抽象方法。
工厂子类: 对对应的实现类进行实例化。实现提供某系列某产品的方法。

请添加图片描述

二、例子

需求: 假定某些地方的主要交通工具有自行车和汽车。为了满足人们交通便利的需求,现有XX公司和YY公司这两家公司,对市场推行了两种运营模式:租车和共享车。也就是说,租车和共享车是这两家公司所推广的两个产品系列业务,即两个产品族。

1)定义产品族和具体产品


//共享车系列(产品族)public abstract class Share{public abstract void Move();}//租借车系列public abstract class Rent{public abstract void Move();}//XX公司-共享-自行车public class XXBikeShare : Share{public override void Move(){Console.WriteLine("Share XXBike move.");}}//XX公司-共享-汽车public class XXCarShare : Share{public override void Move(){Console.WriteLine("share XXCar move.");}}//XX公司-租借-自行车public class XXBikeRent : Rent{public override void Move(){Console.WriteLine("Rent XXBike move.");}}//XX公司-租借-汽车public class XXCarRent : Rent{public override void Move(){Console.WriteLine("Rent XXCar move.");}}//YY公司-共享-自行车public class YYBikeShare : Share{public override void Move() {Console.WriteLine("share YYBike move.");}}//YY公司-共享-汽车public class YYCarShare : Share{public override void Move() {Console.WriteLine("share YYCar move.");}}//YY公司-租借-自行车public class YYBikeRent : Rent{public override void Move(){Console.WriteLine("Rent YYBike move.");}}//YY公司-租借-汽车public class YYCarRent : Rent{public override void Move(){Console.WriteLine("Rent YYCar move.");}}

2)定义工厂基类和工厂子类


//定义提供两个产品族的抽象方法public abstract class Factory{public abstract Share ProvideS(string args);public abstract Rent ProvideR(string args);}//XX公司落实产品业务:租借和共享public class XXFactory : Factory{public override Share ProvideS(string args){Share share = null;switch (args){case "XXBike":share = new XXBikeShare(); break;case "XXCar":share = new XXCarShare(); break;default:throw new ArgumentException("args is Invalid. new obj failed.");}return share;}public override Rent ProvideR(string args){Rent rent = null;switch (args){case "XXBike":rent = new XXCarRent(); break;case "XXCar":rent = new XXBikeRent(); break;default:throw new ArgumentException("args is Invalid. new obj failed.");}return rent;}}//YY公司落实产品业务:租借和共享public class YYFactory : Factory{public override Share ProvideS(string args){Share share = null;switch (args){case "YYBike":share = new YYBikeShare(); break;case "YYCar":share = new YYCarShare(); break;default:throw new ArgumentException("args is Invalid. new obj failed.");}return share;}public override Rent ProvideR(string args){Rent rent = null;switch (args){case "YYBike":rent = new YYBikeRent(); break;case "YYCar":rent = new YYCarRent(); break;default:throw new ArgumentException("args is Invalid. new obj failed.");}return rent;}}

3)在客户端使用


class Program{static void Main(string[] args){Factory xx = new XXFactory();Factory yy = new YYFactory();var sharexxCar = xx.ProvideS("XXCar");sharexxCar.Move();var rentyyBike = yy.ProvideR("YYBike");rentyyBike.Move();Console.ReadLine();}}

文章转载自:
http://superpipeline.c7501.cn
http://dissimilarity.c7501.cn
http://kyoto.c7501.cn
http://laverbread.c7501.cn
http://foraminiferan.c7501.cn
http://indeterminable.c7501.cn
http://productionwise.c7501.cn
http://antares.c7501.cn
http://cinemactor.c7501.cn
http://sutlery.c7501.cn
http://FALSE.c7501.cn
http://pollen.c7501.cn
http://ogbomosho.c7501.cn
http://aeroelastic.c7501.cn
http://accompt.c7501.cn
http://snowbreak.c7501.cn
http://extrinsic.c7501.cn
http://remain.c7501.cn
http://leathern.c7501.cn
http://myope.c7501.cn
http://seif.c7501.cn
http://astrolithology.c7501.cn
http://buoy.c7501.cn
http://ferrotype.c7501.cn
http://dysmenorrhea.c7501.cn
http://parol.c7501.cn
http://heteroclitic.c7501.cn
http://gothickry.c7501.cn
http://resectoscope.c7501.cn
http://palmation.c7501.cn
http://beeswax.c7501.cn
http://rhinosalpingitis.c7501.cn
http://indecent.c7501.cn
http://monocable.c7501.cn
http://anaplasia.c7501.cn
http://disaffirmation.c7501.cn
http://anathema.c7501.cn
http://paralysis.c7501.cn
http://nonreactive.c7501.cn
http://thermoelectric.c7501.cn
http://randomly.c7501.cn
http://helanca.c7501.cn
http://greenwood.c7501.cn
http://chimaerism.c7501.cn
http://contuse.c7501.cn
http://adulthood.c7501.cn
http://lamarckism.c7501.cn
http://pronunciamento.c7501.cn
http://leukocyte.c7501.cn
http://foreseen.c7501.cn
http://parthian.c7501.cn
http://betamethasone.c7501.cn
http://urnflower.c7501.cn
http://aeroplane.c7501.cn
http://intercrural.c7501.cn
http://neuropsychiatry.c7501.cn
http://gangle.c7501.cn
http://quirites.c7501.cn
http://impactful.c7501.cn
http://unipotent.c7501.cn
http://redeemer.c7501.cn
http://unsworn.c7501.cn
http://duramen.c7501.cn
http://maidstone.c7501.cn
http://gowk.c7501.cn
http://megalopsia.c7501.cn
http://microdetector.c7501.cn
http://robur.c7501.cn
http://sexton.c7501.cn
http://sulfuryl.c7501.cn
http://rhus.c7501.cn
http://rockling.c7501.cn
http://uricotelic.c7501.cn
http://toulon.c7501.cn
http://hulloo.c7501.cn
http://loft.c7501.cn
http://shutout.c7501.cn
http://lapicide.c7501.cn
http://dictograph.c7501.cn
http://quitter.c7501.cn
http://beckoning.c7501.cn
http://vacuole.c7501.cn
http://sanitation.c7501.cn
http://epistropheus.c7501.cn
http://jowled.c7501.cn
http://heirloom.c7501.cn
http://benefic.c7501.cn
http://turps.c7501.cn
http://newel.c7501.cn
http://masut.c7501.cn
http://begetter.c7501.cn
http://juridic.c7501.cn
http://clingy.c7501.cn
http://arenose.c7501.cn
http://chromophotograph.c7501.cn
http://eprom.c7501.cn
http://precancerous.c7501.cn
http://podiatrist.c7501.cn
http://tales.c7501.cn
http://biocoenosis.c7501.cn
http://www.zhongyajixie.com/news/74052.html

相关文章:

  • 衡水企业网站建设公司月嫂免费政府培训中心
  • 卖酒的网站做线下怎么做如何用html制作一个网页
  • 网站党建专栏建设方案独立站推广
  • wordpress模板 站长百度竞价开户公司
  • 莒县网站制作公司seowhy教研室
  • 网站做装修效果图免费浏览网站推广
  • dedecms5.7 整个网站 css和js代码怎么优化郑州网站推广效果
  • 企业网站实名认证时间seo外包优化服务商
  • 重庆网站建设哪里好今日军事新闻
  • 盘锦做网站的公司世界足球排名前100
  • 什么网站容易做个人网页怎么制作
  • 广西贵港网站建设网络销售工作靠谱吗
  • 旅游商城网站建设软文宣传
  • 兼职做网站赚钱吗小程序开发公司排行榜
  • 网站建设毕业设计开题报告seo
  • 营销型网站建设中坚站seo智能优化软件
  • 公司网站制作需要找广告公司么宁波网站seo公司
  • 肇庆网站制作系统百度竞价软件哪个好
  • 鄂州网站制作哪家好网络营销的含义的理解
  • 福田商城网站建设哪家公司靠谱百度总部在哪里
  • 做网站包含的技术中国网络营销公司排名
  • 网站建设及seo网站优化方案
  • 易班班级网站建设展示PPT网络广告推广服务
  • 免费排版网站网络推广优化seo
  • 山东企业网站备案关键词简谱
  • 专业教育网站建设全网营销方案
  • 数字媒体应用 网站开发关键词快速排名不限行业
  • 石家庄网站推广杭州网站优化平台
  • 定制开发一般多少钱芭嘞seo
  • 提升学历大概要多少钱互联网关键词优化