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

学习软件开发的网站公众号软文推广

学习软件开发的网站,公众号软文推广,怎么开公众号,铭万做的网站怎么样抽象工厂模式与工厂模式类似,被认为是工厂方法模式的另一层抽象.抽象工厂模式围绕创建其他工厂的超级工厂工作.1.角色:1.1抽象产品:构成产品系列的一组不同但相关的产品的声明接口.1.2具体产品:实现抽象产品接口的类,主要用于定义产品对象,由相应的具体工厂创建.1.3抽象工厂:创…

抽象工厂模式与工厂模式类似,被认为是工厂方法模式的另一层抽象.抽象工厂模式围绕创建其他工厂的超级工厂工作.

1.角色:

1.1抽象产品:

构成产品系列的一组不同但相关的产品的声明接口.

1.2具体产品:

实现抽象产品接口的类,主要用于定义产品对象,由相应的具体工厂创建.

1.3抽象工厂:

创建抽象产品对象的操作接口.

1.4具体工厂:

实现抽象工厂接口的类.用于创建产品对象.每个具体工厂都会生产相应的具体产品.

1.5客户端:

通过抽象接口调用抽象工厂对象和抽象产品对象,客户端能与所有具体工厂或具体产品交互.

2.抽象工厂使用场景:

2.1出于对代码未来扩展性考虑.不希望代码基于具体产品进行构建,可以使用抽象工厂模式.

2.2某个类具有一组抽象方法,并且这个类功能不够明确,可以考虑抽象工厂模式.

2.3如果一个类需要与多种类型的产品交互,可以考虑将工厂方法抽取到具备完整功能的抽象工厂接口中.

3.实现方式:

3.1抽象产品接口:
package itboStudyimport "fmt"// 抽象产品接口
type AbstractProduct interface {GetName() 
}// 具体产品类
type Computer struct {
}//具体产品类中的方法
func (c *Computer) GetName() {fmt.Println("具体产品Computer")
}
3.2抽象工厂接口:
//抽象工厂接口
type AbstractFactory interface {CreateProduct() AbstractProduct
}
3.3具体工厂类及方法:
// 具体工厂类
type ComputerProductFactory struct{}// 初始化具体工厂对象.
func NewComputerProductFactory() ComputerProductFactory {return ComputerProductFactory{}
}// 使用具体工厂对象创建具体产品
func (com *ComputerProductFactory) CreateProduct() Computer {return Computer{}
}
3.4客户端:
func main() {factory := itboStudy.NewComputerProductFactory()product := factory.CreateProduct()product.GetName()
}

4.实战:

4.1抽象接口:
// 电子产品工厂
type InterfaceElectronicFactory interface {MakeComputer() InterfaceComputer
}// 获取电子产品工厂对象
func GetElectronicFactory(brand string) (*LenovoFactory, error) {if brand == "电脑" {return &LenovoFactory{}, nil}return nil, fmt.Errorf("%s", "error brand type")
}
4.2具体工厂类:
// 定义具体工厂类
type LenovoFactory struct{}// 生成联想电脑
func (com *LenovoFactory) MakeComputer() *LenovoComputer {return &LenovoComputer{Computer: Computer{color: "black",size:  14,},}
}
4.3抽象产品接口:
type InterfaceComputer interface {SetColor(color string)SetSize(size int)Getcolor() stringGetsize() int
}type Computer struct {color stringsize  int
}func (com *Computer) SetColor(color string) {com.color = color
}func (com *Computer) SetSize(size int) {com.size = size
}func (com *Computer) GetSize() int {return com.size
}func (com *Computer) GetColor() string {return com.color
}
4.4具体产品类:
// 定义具体产品
type LenovoComputer struct {Computer
}
4.5客户端:
func main() {factory, _ := itboStudy.GetElectronicFactory("电脑")computer := factory.MakeComputer()fmt.Printf("computer:%#v\n", computer.GetColor())
}

5优点:

客户端不知道创建什么类型对象时.

抽象工厂实现了具体的隔离.

抽象工厂可以轻松改变产品系列.

保证产品一致性.

6.缺点:

抽象工厂难以扩展新型产品.如果要支持新型产品需要扩展工厂接口.

可以迟到,但是不会缺席.

http://www.dtcms.com/a/466026.html

相关文章:

  • 网站页面大小优化怎么做泉州网站制作哪个好微
  • 代理服务器ip免费邹平县seo网页优化外包
  • 深度学习基础-Chapter 01-感知机和全连接
  • 企业内部网站模板下载网站如何做ICP备案
  • 用js获取浏览器视口高度,并设置元素满屏显示
  • 南山网站建设哪家好静宁县建设局网站
  • Javaer快速掌握Python笔记
  • 刘娇娇做网站骗钱的有什么做网站优化公司
  • ONNX(Open Neural Network Exchange)
  • 医疗发票 OCR 识别:打通医疗费用处理 “堵点” 的技术助手
  • 【C++——面向对象编程综合案例】
  • Pulsar存储计算分离架构设计之存储层BookKeeper(下)
  • 网站建设相对路径广告宣传网站
  • Git 与 GitHub 协同工作流:从0到1搭建版本控制体系
  • VSCode配置PCL1.11.1(CMakeLists.txt)
  • 安装Wasm版的MoonBit工具链
  • 大气的金融网站品质好物推荐怎么上
  • 【MongoDB的RLE压缩数据存储】
  • PostIn入门到实战(10) - 如何通过测试计划+定时任务实现接口自动化回归测试
  • numpy -- 统计函数 mean() 函数简介
  • 做金融看哪些网站有哪些图片的制作方法
  • 莱芜网站优化排名公司网站添加cms
  • 【计算机通识】TCP/IP协议通俗讲解
  • sql的表join怎么学?
  • 丹徒区建设局网站做整合营销的网站
  • RTMP推拉流EasyDSS视频直播推流技术如何成为科研教学与融媒体结合的催化剂?
  • 长沙做黄叶和网站的公司有哪些卓越科技建站无锡做网站
  • 深圳做兼职的网站设计事业单位网站建设算固定资产吗
  • 安装提示缺库怎么办?快速补齐缺失组件方法
  • 多部分文件上传的时候 parseRequest(RequestContext) 总是报错