浙江通管局 网站备案如何好注销,军事网址大全 网站,搜狗搜索排名优化,如何优化wordpress文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.2 类图 1. 概述
门面#xff08;Facade#xff09;向客户端提供使用子系统的统一接口#xff0c;用于简化客户端使用子系统的操作。
1.1 角色
门面角色#xff08;Facade#xff09; 客户端可以调用的接… 文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.2 类图 1. 概述
门面Facade向客户端提供使用子系统的统一接口用于简化客户端使用子系统的操作。
1.1 角色
门面角色Facade 客户端可以调用的接口或方法此角色知晓系统的所有功能和责任一般情况下该角色没有实际业务逻辑只是一个委托类。 子系统角色Subsystem 同时有一个或多个子系统子系统并不知道门面的存在对于子系统门面是一个客户端
1.2 类图 #mermaid-svg-NKRINGFtSZ0d9w28 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NKRINGFtSZ0d9w28 .error-icon{fill:#552222;}#mermaid-svg-NKRINGFtSZ0d9w28 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NKRINGFtSZ0d9w28 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-NKRINGFtSZ0d9w28 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NKRINGFtSZ0d9w28 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NKRINGFtSZ0d9w28 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NKRINGFtSZ0d9w28 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NKRINGFtSZ0d9w28 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NKRINGFtSZ0d9w28 .marker.cross{stroke:#333333;}#mermaid-svg-NKRINGFtSZ0d9w28 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NKRINGFtSZ0d9w28 g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-NKRINGFtSZ0d9w28 g.classGroup text .title{font-weight:bolder;}#mermaid-svg-NKRINGFtSZ0d9w28 .nodeLabel,#mermaid-svg-NKRINGFtSZ0d9w28 .edgeLabel{color:#131300;}#mermaid-svg-NKRINGFtSZ0d9w28 .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-NKRINGFtSZ0d9w28 .label text{fill:#131300;}#mermaid-svg-NKRINGFtSZ0d9w28 .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-NKRINGFtSZ0d9w28 .classTitle{font-weight:bolder;}#mermaid-svg-NKRINGFtSZ0d9w28 .node rect,#mermaid-svg-NKRINGFtSZ0d9w28 .node circle,#mermaid-svg-NKRINGFtSZ0d9w28 .node ellipse,#mermaid-svg-NKRINGFtSZ0d9w28 .node polygon,#mermaid-svg-NKRINGFtSZ0d9w28 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NKRINGFtSZ0d9w28 .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-NKRINGFtSZ0d9w28 g.clickable{cursor:pointer;}#mermaid-svg-NKRINGFtSZ0d9w28 g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-NKRINGFtSZ0d9w28 g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-NKRINGFtSZ0d9w28 .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-NKRINGFtSZ0d9w28 .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-NKRINGFtSZ0d9w28 .dashed-line{stroke-dasharray:3;}#mermaid-svg-NKRINGFtSZ0d9w28 #compositionStart,#mermaid-svg-NKRINGFtSZ0d9w28 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #compositionEnd,#mermaid-svg-NKRINGFtSZ0d9w28 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #dependencyStart,#mermaid-svg-NKRINGFtSZ0d9w28 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #dependencyStart,#mermaid-svg-NKRINGFtSZ0d9w28 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #extensionStart,#mermaid-svg-NKRINGFtSZ0d9w28 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #extensionEnd,#mermaid-svg-NKRINGFtSZ0d9w28 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #aggregationStart,#mermaid-svg-NKRINGFtSZ0d9w28 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 #aggregationEnd,#mermaid-svg-NKRINGFtSZ0d9w28 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-NKRINGFtSZ0d9w28 .edgeTerminals{font-size:11px;}#mermaid-svg-NKRINGFtSZ0d9w28 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Client Facade SubsystemA -Service() SubsystemB -Service() SubsystemC -Service() 2. 代码示例
2.1 设计
分别创建Deployment、Service、PVC三个类 它们的Create()方法给它本身赋值它们的Get()方法可以查询它本身 创建统一门面Project() 它关联了Deployment、Service、PVC三个类它的Create()方法调用Deployment、Service、PVC的Create()方法创建它和所有子系统它的Get()方法调用Deployment、Service、PVC的Cet()方法查询它和所有子系统 调用 实例化一个门面project用它的Create()方法统一创建所有子系统查询结果
2.2 代码
package mainimport fmt
//创建一个子系统角色
type Deployment struct {Name stringKind stringImage stringvolume string
}func (deployment *Deployment) Create(name string, image string, volume string) {deployment.Name namedeployment.Image imagedeployment.Kind Deploymentdeployment.volume pvc: volume
}
func (deployment *Deployment) Get() {fmt.Printf(%v\n, deployment)
}
//创建第二个子系统角色
type Service struct {Name stringKind stringSelector string
}func (service *Service) Create(name string, selector string) {service.Name nameservice.Kind Serviceservice.Selector deployment: selector
}
func (service *Service) Get() {fmt.Printf(%v\n, service)
}
//创建第三个子系统角色
type PVC struct {Name stringKind string
}func (pvc *PVC) Create(name string) {pvc.Name namepvc.Kind PersistentVolumeClaim
}
func (pvc *PVC) Get() {fmt.Printf(%v\n, pvc)
}
//创建门面它包含了所有子系统
type Project struct {Name stringDeployment DeploymentService ServicePVC PVC
}func (project *Project) Create(name string, image string) {project.Name nameproject.PVC.Create(pvc_ name)project.Deployment.Create(name, image, project.PVC.Name)project.Service.Create(name, project.Deployment.Name)
}
func (project *Project) Get() {fmt.Println(project.Name)project.Deployment.Get()project.Service.Get()project.PVC.Get()
}func main() {project : Project{}project.Create(nginx, nginx:1.21)project.Get()
}输出
nginx
{Name:nginx Kind:Deployment Image:nginx:1.21 volume:pvc:pvc_nginx}
{Name:nginx Kind:Service Selector:deployment:nginx}
{Name:pvc_nginx Kind:PersistentVolumeClaim}2.2 类图 #mermaid-svg-sKO4i9dOloER5OH3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sKO4i9dOloER5OH3 .error-icon{fill:#552222;}#mermaid-svg-sKO4i9dOloER5OH3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sKO4i9dOloER5OH3 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sKO4i9dOloER5OH3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sKO4i9dOloER5OH3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sKO4i9dOloER5OH3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sKO4i9dOloER5OH3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sKO4i9dOloER5OH3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sKO4i9dOloER5OH3 .marker.cross{stroke:#333333;}#mermaid-svg-sKO4i9dOloER5OH3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sKO4i9dOloER5OH3 g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-sKO4i9dOloER5OH3 g.classGroup text .title{font-weight:bolder;}#mermaid-svg-sKO4i9dOloER5OH3 .nodeLabel,#mermaid-svg-sKO4i9dOloER5OH3 .edgeLabel{color:#131300;}#mermaid-svg-sKO4i9dOloER5OH3 .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-sKO4i9dOloER5OH3 .label text{fill:#131300;}#mermaid-svg-sKO4i9dOloER5OH3 .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-sKO4i9dOloER5OH3 .classTitle{font-weight:bolder;}#mermaid-svg-sKO4i9dOloER5OH3 .node rect,#mermaid-svg-sKO4i9dOloER5OH3 .node circle,#mermaid-svg-sKO4i9dOloER5OH3 .node ellipse,#mermaid-svg-sKO4i9dOloER5OH3 .node polygon,#mermaid-svg-sKO4i9dOloER5OH3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sKO4i9dOloER5OH3 .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-sKO4i9dOloER5OH3 g.clickable{cursor:pointer;}#mermaid-svg-sKO4i9dOloER5OH3 g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-sKO4i9dOloER5OH3 g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-sKO4i9dOloER5OH3 .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-sKO4i9dOloER5OH3 .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-sKO4i9dOloER5OH3 .dashed-line{stroke-dasharray:3;}#mermaid-svg-sKO4i9dOloER5OH3 #compositionStart,#mermaid-svg-sKO4i9dOloER5OH3 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #compositionEnd,#mermaid-svg-sKO4i9dOloER5OH3 .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #dependencyStart,#mermaid-svg-sKO4i9dOloER5OH3 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #dependencyStart,#mermaid-svg-sKO4i9dOloER5OH3 .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #extensionStart,#mermaid-svg-sKO4i9dOloER5OH3 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #extensionEnd,#mermaid-svg-sKO4i9dOloER5OH3 .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #aggregationStart,#mermaid-svg-sKO4i9dOloER5OH3 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 #aggregationEnd,#mermaid-svg-sKO4i9dOloER5OH3 .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sKO4i9dOloER5OH3 .edgeTerminals{font-size:11px;}#mermaid-svg-sKO4i9dOloER5OH3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Client Project Name:string Create() Get() Deployment Name:string Kind:string Image:string volume:string Create() Get() Service Name:string Kind:string Selector:string Create() Get() PVC Name:string Kind:string Create() Get()