go设计模式之抽象工厂

在上一篇文章中,通过手机的例子对工厂方法进行了展开。制造商不单单只生产手机这一种产品,同时也生产pc,如果工厂扩展其它业务,工厂方法模式就不适用了。为了实现工厂扩展其它业务这个需要,通过抽象工厂这种模式实现这个需要。

以下就是实现的代码

package main

import "fmt"

type IProduct interface {
	ShowBrand()
}

type IPhone struct {
}

func (p *IPhone) ShowBrand() {
	fmt.Println("我是苹果手机")
}

type Mac struct {
}

func (pc *Mac) ShowBrand() {
	fmt.Println("我是苹果电脑")
}

type Factory interface {
	CreatePhone() IPhone
	CreatePc() Mac
}


// 苹果工厂
type IFactory struct {
}

func (F *IFactory) CreatePhone() IProduct {
	return &IPhone{}
}

func (F *IFactory) CreatePc() IProduct {
	return &Mac{}
}

func main() {
	var  factory = &IFactory{}

    phone := factory.CreatePhone()
    phone.ShowBrand()

    pc := factory.CreatePc()
    pc.ShowBrand()
}

以上就是抽象工厂模式,抽象一个工厂类,创建各个产品的方法,通过具体的工厂类实现该接口

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

javascript ES6 初次相见

JS的ES6网上也热炒了好久了, 我一直也没怎么太细看, 今天想起来就写个东西, 也为分享,也为学习。 我喜欢接地气一点,所以网上的那些新名词我就不写了, 就写...

19870
来自专栏偏前端工程师的驿站

JS魔法堂:不完全国际化&本地化手册 之 理論篇

前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求——国际化&本地化。熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"...

24780
来自专栏web前端教室

为什么你的代码看起来像“野路子”出来的?

这段时间看0827零基础班同学们的作业,html、css、js的基本的语法、用法已经都能掌握。现在阶段主要的问题是,

11830
来自专栏Java呓语

策略模式(分离算法,选择实现)

如果您是第一次阅读我的设计模式系列文章,建议先阅读设计模式开篇,希望能得到您宝贵的建议。

11030
来自专栏Java爬坑系列

【Java入门提高篇】Day4 Java中的回调

  又忙了一周,事情差不多解决了,终于有可以继续写我的博客了(各位看官久等了)。   这次我们来谈一谈Java里的一个很有意思的东西——回调。   什么叫回调,...

219110
来自专栏aCloudDeveloper

python基础的几个小练习题

题目: 1、写一个程序,判断2008年是否是闰年。 2、写一个程序,用于计算2008年10月1日是这一年的第几天?(2008年1月1日是这一年的第一天) 3、(...

29960
来自专栏斑斓

响应式编程的实践

作者 | 张逸 特别说明:本文包含大量代码片段,若要获得更好阅读观感,请点击文末“阅读原文”或访问我的博客。 响应式编程在前端开发以及Android开发中有颇多...

39480
来自专栏编程一生

谈面试时从写一个单例开始究竟能问多深及终极解决方案

15140
来自专栏司想君

前端也要学系列:设计模式之装饰者模式

今天我们来讲另外一个非常实用的设计模式:装饰者模式。这个名字听上去有些莫名其妙,不着急,我们先来记住它的一个别名:包装器模式。

9920
来自专栏java工会

一分钟搞明白java8中的lambda|文末红包

23750

扫码关注云+社区

领取腾讯云代金券