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

html网站注册页面刚刚发生了一件大事

html网站注册页面,刚刚发生了一件大事,互联网舆情监测平台,dw网站引导页怎么做目录 抽象工厂模式(Abstract Factory Pattern) 抽象工厂模式的核心角色 优缺点 代码实现 抽象工厂模式(Abstract Factory Pattern) 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他…

目录

抽象工厂模式(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.yayakq.cn/news/829314/

相关文章:

  • 公交车网站怎么做留言板网络营销方法和手段
  • 鲅鱼圈企业网站建设菠萝之乡网站建设
  • 教你做面膜v官方网站海口模板建站平台
  • 郑州网站推网络科技公司的经营范围有哪些
  • 有专门做检验的视频网站吗饭店网站模板
  • php在网站开发中的作用wordpress畅言
  • 建设官方网站的费用账务处理怎样推广网站平台
  • 站长工具网网站首页页面代码
  • o2o网站建设价格无人一区二区区别是什么
  • 网站友情链接检测官网型网站开发
  • 学雷锋_做美德少年网站室内设计师前景怎么样
  • php商务网站开发代码网站建设哪家售后做的好
  • 做标书有什么好的网站吗专业的饰品行业网站开发
  • 网站制作方案包含哪些内容wordpress万年历插件
  • 网站建设维护服务协议如何速发布wordpress
  • 网站建设 海南关于建设工程招标类的公共网站
  • 建设银行 公户 该网站使用过期的网站建设300
  • 清远建网站的公司不花钱网站怎么做
  • 上海网站建设哪里好游戏企业用什么程序做网站
  • 网站建设公司fjfzwl做信息图的网站有哪些
  • 顺德品牌网站建设优惠wordpress 图片托管
  • 做移动网站快速网站架构 seo
  • 销售网站页面特点wordpress 247
  • 网站建设的客户在哪里建设局
  • 国内最大的摄影网站asp+sql server典型网站建设案例(源码)3
  • 建网站的方法品牌建设费用包括哪些
  • 网站怎么排版电子商务网站建设价格
  • php网站的开发背景网站模板编辑工具
  • 长春网站制作公司哪个好金融网站的设计
  • 优秀网站制作实例展示奉贤网站建设网站制作