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

纯flash网站下载网站flash引导页

纯flash网站下载,网站flash引导页,汽车电商网站建设,如何编写一个软件文章目录 1 概述2.1 角色2.2 类图 2 代码示例2. 1 设计2.2 代码2.3 类图 3. 简单工厂3.1 角色3.2 类图3.3 代码示例3.3.1 设计3.3.2 代码3.3.3 类图 1 概述 工厂方法类定义产品对象创建接口,但由子类实现具体产品对象的创建。 2.1 角色 Product(抽象产…

文章目录

  • 1 概述
    • 2.1 角色
    • 2.2 类图
  • 2 代码示例
    • 2. 1 设计
    • 2.2 代码
    • 2.3 类图
  • 3. 简单工厂
    • 3.1 角色
    • 3.2 类图
    • 3.3 代码示例
      • 3.3.1 设计
      • 3.3.2 代码
      • 3.3.3 类图

1 概述

工厂方法类定义产品对象创建接口,但由子类实现具体产品对象的创建。

2.1 角色

  • Product(抽象产品):它是具体产品的抽象类,可以是结构体,也可以是接口
  • ConcreteProduct(具体产品):它实现了抽象产品接口,对应了一种具体产品
  • Factroy(抽象工厂):在抽象工厂类中声明了工厂方法,用于返回一个产品。
  • ConcreteFactory(具体工厂):实现了在抽象工厂中声明的工厂方法,并可由客户端调用,返回一个具体产品类的实例。

2.2 类图

«interface»
Product
+Get()
ConcreteProductA
+Get()
ConcreteProductB
+Get()
«interface»
Factroy
+CreateProduct()
ConcreteFactroyA
+CreateProduct() : Product
ConcreteFactroyB
+CreateProduct() : Product
Client

2 代码示例

2. 1 设计

2.2 代码

package mainimport ("fmt"
)type Product interface {Get()
}type ConcreteProductA struct {Name stringKind string
}func (c *ConcreteProductA) Get() {fmt.Printf("%+v",c)
}
type ConcreteProductB struct {Name stringKind string
}func (c *ConcreteProductB) Get() {fmt.Printf("%+v",c)
}type ConcreteProductC struct {Name stringKind string
}func (c *ConcreteProductC) Get() {fmt.Printf("%+v",c)
}type Factroy interface {CreateProduct(name string) Product
}type ConcreteFactoryA struct {
}func (f  *ConcreteFactoryA) CreateProduct(name string) Product {p := &ConcreteProductA{Name: name,Kind:"A",}return p
}type ConcreteFactoryB struct {
}func (f *ConcreteFactoryB) CreateProduct(name string) Product {p := &ConcreteProductB{Name: name,Kind: "B",}return p
}type ConcreteFactoryC struct {
}func (f *ConcreteFactoryC) CreateProduct(name string) Product {p := &ConcreteProductC{Name: name,Kind: "C",}return p
}func CreateProduct(myType int64) Factroy {switch myType {case 1:return  &ConcreteFactoryA{}case 2:return &ConcreteFactoryB{}case 3:return &ConcreteFactoryC{}}return nil
}func main() {factory := CreateProduct(1)product := factory.CreateProduct("nginx")product.Get()
}
  • 输出
&{Name:nginx Kind:A}

2.3 类图

«interface»
Product
+Get()
ConcreteProductA
+string Name
+string Kind
+Get()
ConcreteProductB
+string Name
+string Kind
+Get()
ConcreteProductC
+string Name
+string Kind
+Get()
«interface»
Factroy
+CreateProduct()
ConcreteFactroyA
+CreateProduct() : Product
ConcreteFactroyB
+CreateProduct() : Product
ConcreteFactroyC
+CreateProduct() : Product

3. 简单工厂

在产品结构简单的情况下,我们可以把工厂模式简化成一个简单工厂

3.1 角色

  • Product(抽象产品):它是具体产品的抽象类,可以是结构体,也可以是接口
  • ConcreteProduct(具体产品):它实现了抽象产品接口,对应了一种具体产品
  • Factroy(简单工厂):根据一个条件用于返回一个产品

去掉了具体工厂角色,产品由简单工厂直接返回。

3.2 类图

«interface»
Product
+Create()
ConcreteProductA
+Create()
ConcreteProductB
+Create()
Factroy
+CreateProduct() : Product

3.3 代码示例

3.3.1 设计

  • 定义一个抽象产品Product
  • 定义三个具体产品ConcreteProductAConcreteProductBConcreteProductC
    • 它们各自的Get()方法会访问它本身
  • 定义一个简单工厂
    • 简单工厂的CreateProduct()方法会返回一个产品
  • 调用
    • 实例化一个简单工厂
    • 用简单工厂创建一个产品
    • 用产品的Get()方法查询结果

3.3.2 代码

package mainimport ("fmt"
)type Product interface {Get()
}type ConcreteProductA struct {Name stringKind string
}func (c *ConcreteProductA) Get() {fmt.Printf("%+v", c)
}type ConcreteProductB struct {Name stringKind string
}func (c *ConcreteProductB) Get() {fmt.Printf("%+v", c)
}type ConcreteProductC struct {Name stringKind string
}func (c *ConcreteProductC) Get() {fmt.Printf("%+v", c)
}type Factroy struct {
}func (f *Factroy) CreateProduct(myType int64, name string) Product {switch myType {case 1:return &ConcreteProductA{Name: name,Kind: "A",}case 2:return &ConcreteProductB{Name: name,Kind: "B",}case 3:return &ConcreteProductC{Name: name,Kind: "C",}}return nil
}func main() {factory := &Factroy{}product := factory.CreateProduct(1, "nginx")product.Get()
}
  • 输出
&{Name:nginx Kind:A}

3.3.3 类图

«interface»
Product
+Get()
ConcreteProductA
+Name
+Kind
+Cet()
ConcreteProductB
+Name
+Kind
+Get()
ConcreteProductC
+Name
+Kind
+Get()
Factroy
+CreateProduct() : Product

在这里插入图片描述

http://www.yayakq.cn/news/699321/

相关文章:

  • 东莞市做网站公司wordpress wp-json
  • 做网站方面wordpress 粘贴图片
  • 表格在网站后台是居中可到前台为什么不居中网站建设公司怎
  • 建材做哪些网站公众号平台登陆入口
  • 青海省住房和城乡建设厅 网站网页音频提取工具
  • 网站建设哪家公司便宜无锡找厂网站
  • 网站色调红黑医疗网络推广外包
  • 建立网站的程序国家新闻最新消息今天
  • seo人员要先对网站进行诊断动态的网站大概多少钱
  • 临漳+网站建设学校培训
  • 网站导航条怎么做效果国外网站如何备案
  • 深圳网站设计教程购买网站空间
  • asp.net 网站数据库深圳电器公司官网
  • 注册域名后怎么建网站工厂拿货回家加工
  • 湖北省住房建设厅网站最新企业名录免费
  • 网站开发与app差距网站设计公司杭州
  • 学技术网站wordpress外汇
  • 如何找专业的网站建设公司wordpress插件导出
  • 网站注册域名位置企业网站推广可以选择哪些方法?
  • 西宁微网站建设多少钱如何获取免费的wordpress
  • 简单的网站建设企业微信公众号微商城平台
  • 凯里哪里有做网站的网站建设费用主要包括哪些方面
  • 常州网站制作企业热搜榜百度一下你就知道
  • 网站平台怎么建立新乡seo外包
  • 做网站和app报价网页代码模板源码
  • 如何给网站做脚本app开发与制作公司
  • app开发网站建设培训班wordpress html5 支持
  • 0基础学习网站建设北京vi设计公司广州标志设计
  • 新手做网站的几个必要步骤自己做的网站怎么让别人看见
  • 设计公司门头设计北京网站优化招聘