写点什么

第三周作业

用户头像
Vincent
关注
发布于: 2020 年 09 月 07 日

手写单例

组合模式

package main
import (
"fmt"
)
func main() {
w:=NewWindowForm("WINDOW窗口")
w.Add(NewPicture("LOGO图片"))
w.Add(NewButton("登录"))
w.Add(NewButton("注册"))
f:=NewFrame("FRAME1")
f.Add(NewLable("用户名"))
f.Add(NewTextBox("文本框"))
f.Add(NewLable("密码"))
f.Add(NewPasswordBox("密码框"))
f.Add(NewCheckBox("复选框"))
f.Add(NewTextBox("记住用户名"))
f.Add(NewLinkLable("忘记密码"))
w.Add(f)
w.Draw()
}
type Component interface {
Draw()
}
type Contain interface {
Component
Add()
}
type WindowForm struct {
name string
components []Component
}
func NewWindowForm(n string) *WindowForm {
return &WindowForm{name: n}
}
func (w WindowForm) Draw() {
fmt.Printf("WinForm(%s)\n", w.name)
for _, c := range w.components {
c.Draw()
}
}
func (w *WindowForm) Add(c Component) {
w.components = append(w.components, c)
}
type Picture struct {
name string
}
func NewPicture(n string) *Picture {
return &Picture{name: n}
}
func (p Picture) Draw() {
fmt.Printf("Picture(%s)\n", p.name)
}
type Button struct {
name string
}
func NewButton(n string) *Button {
return &Button{name:n}
}
func (b Button) Draw() {
fmt.Printf("Button(%s)\n",b.name)
}
type Frame struct {
name string
components []Component
}
func NewFrame(n string) *Frame {
return &Frame{name:n}
}
func (f Frame) Draw() {
fmt.Printf("Frame(%s)\n",f.name)
for _, c := range f.components {
c.Draw()
}
}
func (f *Frame) Add(c Component) {
f.components = append(f.components, c)
}
type Lable struct {
name string
}
func NewLable(n string) *Lable {
return &Lable{name:n}
}
func (l Lable) Draw() {
fmt.Printf("Lable(%s)\n",l.name)
}
type TextBox struct {
name string
}
func NewTextBox(n string) *TextBox {
return &TextBox{name:n}
}
func (t TextBox) Draw() {
fmt.Printf("TextBox(%s)\n",t.name)
}
type PasswordBox struct {
name string
}
func NewPasswordBox(n string) *PasswordBox {
return &PasswordBox{name:n}
}
func (t PasswordBox) Draw() {
fmt.Printf("PasswordBox(%s)\n",t.name)
}
type CheckBox struct {
name string
}
func NewCheckBox(n string) *CheckBox {
return &CheckBox{name:n}
}
func (t CheckBox) Draw() {
fmt.Printf("CheckBox(%s)\n",t.name)
}
type LinkLable struct {
name string
}
func NewLinkLable(n string) *LinkLable {
return &LinkLable{name:n}
}
func (t LinkLable) Draw() {
fmt.Printf("LinkLable(%s)\n",t.name)
}

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字

正文不能少于50字



发布于: 2020 年 09 月 07 日阅读数: 39
用户头像

Vincent

关注

还未添加个人签名 2018.07.06 加入

上个课还要写作业,哎,挺好,挺好。

评论

发布
暂无评论
第三周作业