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

中盛浩瀚建设有限公司网站注册个人网址

中盛浩瀚建设有限公司网站,注册个人网址,湖南营销型网站建设磐石网络省钱,深圳航空公司最新官网目录 抽象工厂模式#xff08;Abstract Factory Pattern#xff09; 抽象工厂模式的核心角色 优缺点 代码实现 抽象工厂模式#xff08;Abstract Factory Pattern#xff09; 抽象工厂模式#xff08;Abstract Factory Pattern#xff09;是围绕一个超级工厂创建其他…目录 抽象工厂模式Abstract Factory Pattern 抽象工厂模式的核心角色 优缺点 代码实现 抽象工厂模式Abstract Factory Pattern 抽象工厂模式Abstract Factory Pattern是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。在抽象工厂模式中接口是负责创建一个相关对象的工厂不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口而无需指定具体实现类。通过使用抽象工厂模式可以将客户端与具体产品的创建过程解耦使得客户端可以通过工厂接口来创建一族产品。 抽象工厂模式基于工厂方法模式。两者的区别在于工厂方法模式是创建出一种产品而抽象工厂模式是创建出一类产品。这二种都属于工厂模式在设计上是相似的。 抽象工厂模式的核心角色 1、抽象工厂Abstract Factory声明了一组用于创建产品对象的方法每个方法对应一种产品类型。抽象工厂可以是接口或抽象类。 2、具体工厂Concrete Factory实现了抽象工厂接口负责创建具体产品对象的实例。 3、抽象产品Abstract Product定义了一组产品对象的共同接口或抽象类描述了产品对象的公共方法。 4、具体产品Concrete Product实现了抽象产品接口定义了具体产品的特定行为和属性。 优缺点 1优点当一个产品族中的多个对象被设计成一起工作时它能保证客户端始终只使用同一个产品族中的对象。 2缺点产品族扩展非常困难要增加一个系列的某一产品既要在抽象的 Creator 里加代码又要在具体的里面加代码 代码实现 package mainimport fmt// (抽象工厂) 能够生产tv、手机、Ipad type AbstractFactory interface {CreateTelevision() TelevisionCreateIpad() IpadCreateCellphone() Cellphone }// (抽象产品) -- Television type Television interface {Watch() }// (抽象产品) -- Ipad type Ipad interface {Play() }// (抽象产品) -- Cellphone type Cellphone interface {Callphone() }// (具体工厂) 华为工厂 type HuaweiFactory struct { }func (hf *HuaweiFactory) CreateTelevision() Television {return HuaweiTelevision{} } func (hf *HuaweiFactory) CreateIpad() Ipad {return HuaweiIpad{} } func (hf *HuaweiFactory) CreateCellphone() Cellphone {return HuaweiCellphone{} }// (具体产品)华为Television实现了Television接口 type HuaweiTelevision struct { }func (hc *HuaweiTelevision) Watch() {fmt.Println(Watch Huawei Television) }// (具体产品)华为Ipad实现了Ipad接口 type HuaweiIpad struct { }func (hc *HuaweiIpad) Play() {fmt.Println(Play Huawei Ipad) }// (具体产品)华为Cellphone实现了Cellphone接口 type HuaweiCellphone struct { }func (hc *HuaweiCellphone) Callphone() {fmt.Println(Call Huawei Cellphone) }// (具体工厂) 小米工厂 type MiFactory struct { }func (mf *MiFactory) CreateTelevision() Television {return MiTelevision{} } func (mf *MiFactory) CreateIpad() Ipad {return nil } func (mf *MiFactory) CreateCellphone() Cellphone {return MiCellphone{} }// (具体产品)小米Television实现了Television接口 type MiTelevision struct { }func (mt *MiTelevision) Watch() {fmt.Println(Watch Mi Television) }// (具体产品)小米Cellphone实现了Cellphone接口 type MiCellphone struct { }func (mc *MiCellphone) Callphone() {fmt.Println(Call Mi Cellphone) }// 超级工厂类 获取超级工厂实例 type HyperFactory struct { }func (hf *HyperFactory) CreateFactory(factoryName string) AbstractFactory {switch factoryName {case Huawei:return HuaweiFactory{}case Mi:return MiFactory{}default:return nil} }func main() {hfactoey : HyperFactory{}hwfactory : hfactoey.CreateFactory(Huawei)hwfactory.CreateTelevision().Watch()hwfactory.CreateIpad().Play()hwfactory.CreateCellphone().Callphone()mifactory : hfactoey.CreateFactory(Mi)mifactory.CreateTelevision().Watch()if mifactory.CreateIpad() nil {fmt.Println(不支持)}mifactory.CreateCellphone().Callphone() }
http://www.pierceye.com/news/17947/

相关文章:

  • 青岛网站建设排名软件工程考研难度
  • 网站代运营推广网站运营推广方式
  • 站内seo内容优化包括个人网站建设优化
  • 南宁网站建设gxjzdrj长春昆仑建设股份有限公司网站
  • 番禺建设网站哪家好网站建设公司的pest分析
  • 济南建设集团网站wordpress 菜单没了
  • 找人做菠菜网站需要多少钱上海襄阳网站建设
  • 网络销售型网站有哪些内容宁波网站营销推广制作
  • 网站开发使用什么语言软件开发培训去哪报名
  • 西安在线网站制作wordpress 能承受多大并发访问
  • asp企业网站cms深圳网络营销推广外包
  • 专业摄影网站网站建设中字样图片
  • 创造网站的最简单 软件是哪个商丘网站建设哪家值得信任
  • 国内做医疗耗材的网站工商服务网
  • 高端大气的的网站上海原画培训机构排名
  • 怎么做网站互换链接个人网站建设知乎
  • sq网站推广海外营销策略
  • 如何制作一个属于自己的网站新乡 网站开发
  • 广州市住房和城乡建设局官方网站微信小程序商城开发教程
  • 国内外包网站wordpress连阿里云域名
  • 如何侵入网站服务器网站开发设计知乎
  • 一份电子商务网站建设规划书网站域名所有权
  • 网站源码做exe执行程序小程序哪家开发最好
  • 哪里学做网站网站备案主体是什么
  • 网站开发技术是什么专业会的江苏手机网站建设
  • 做网站用的字体是什么网站项目建设流程
  • 网站建设最低要求插件 wordpress开发
  • 佛山英文网站建设娄底网站制作
  • 贵阳市住房城乡建设局八大员网站宝塔面板配置wordpress
  • 织梦招商加盟网站源码怎么制作图片表格