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

网页安全站点设置深圳百度推广开户

网页安全站点设置,深圳百度推广开户,教育培训有限公司可以多少钱注册,设计网站什么叫空间不稳定文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 备忘录(Memento)用于在不破坏目标对象封装特性的基础上,将目标对象内部的状态存储到外部对象中,以备之后恢复状态时使用。 1.1 角色 Originato…

文章目录

  • 1. 概述
    • 1.1 角色
    • 1.2 类图
  • 2. 代码示例
    • 2.1 设计
    • 2.2 代码
    • 2.3 类图

1. 概述

备忘录(Memento)用于在不破坏目标对象封装特性的基础上,将目标对象内部的状态存储到外部对象中,以备之后恢复状态时使用。

1.1 角色

  • Originator(发起者):当前的基础对象,它会将自己的状态保存进备忘录。
    • savememento()方法:Originator通过该方法将它自己状态保存进一个备忘录对象。
    • restorememento()方法:Originator通过该方法将它自己状态回滚至指定备忘录。
  • Memento(备忘录) : 存储Originator状态的对象
  • Caretaker(管理者):保存多条备忘录的对象,并维护着备忘录的索引,在需要的时候会返回相应的备忘录。

1.2 类图

Originator
-state:State
+RestoreState(m:Memento)
+CreateMemento()
Memento
-state:State
+GetState()
Caretaker
+StoreMemento(m:Memento)
+GetMemento(c:Condition)

2. 代码示例

2.1 设计

  • 定义备忘录memento来记录发起者状态
  • 它的Get()方法获取它的状态
  • 定义发起者Originator
    • 它的方法 CreateMemento() 用它自己创建一条备忘录
    • 它的方法 RollBack() 将它自己回滚至指定备忘录的状态
    • 它的Set()方法可以设置它的状态
    • 它的Get()方法可以获取它的状态
  • 创建一个管理者Caretaker,它是备忘录Memento的聚合
    • 它的AddMemento方法,向它自身加入一条备忘录
    • 它的GetMemento()方法,查询一条它管理的指定备忘录
  • 调用
    • 初始化
      • 实例化一个管理者caretaker
      • 实例化一个发起者originator
    • 创建备忘录测试
      • 第一次
        • 用发起者创建一条备忘录
        • 管理者收录该备忘录
      • 第二次
        • 改变发起者状态
        • 用发起者创建一条新备忘录
        • 管理者收录该备忘录
      • 第三次
        • 改变发起者状态
        • 用发起者创建一条新备忘录
        • 管理者收录该备忘录
      • 查看管理者信息,应该有三条备忘录
    • 回滚测试
      • 从管理者获取指定索引的备忘录
      • 将发起者回滚至该备忘录状态

2.2 代码

  • 代码
package mainimport "fmt"// 定义备忘录
type Memento struct {state string
}// 查备忘录状态
func (m *Memento) Get() string {return m.state
}// 定义发起者
type Originator struct {state string
}// 根据发起者状态创建一条备忘录
func (e *Originator) CreateMemento() (memento *Memento) {memento = &Memento{state: e.state}fmt.Printf("创建一条备忘录:%+v\n", memento)return memento
}// 将发起者状态回滚至指定备忘录状态
func (e *Originator) RollBack(m *Memento) {e.state = m.Get()fmt.Printf("发起者状态回滚至:%v\n", e)
}// 设置发起者状态
func (e *Originator) Set(state string) {e.state = statefmt.Println("发起者状态更改为:", e.state)
}// 获取发起者状态
func (e *Originator) Get() string {fmt.Println("获取发起者状态为:", e.state)return e.state
}// 定义管理者,管理者是备忘录的聚合
type Caretaker struct {mementoArray []*Memento
}// 向管理者中添加一条备忘录
func (c *Caretaker) AddMemento(m *Memento) {fmt.Printf("向管理者中添加一条备忘录:%+v\n", m)c.mementoArray = append(c.mementoArray, m)
}// 获取指定备忘录信息
func (c *Caretaker) GetMemento(index int) *Memento {fmt.Printf("获取到第 %d 条备忘录信息为:%+v\n", index, c.mementoArray[index])return c.mementoArray[index]
}func main() {//实例化一个管理者caretaker := &Caretaker{mementoArray: make([]*Memento, 0),}//实例化一个发起者originator := &Originator{state: "A",}//为发起者创建一条备忘录memento0 := originator.CreateMemento()//在管理者中加入该备忘录caretaker.AddMemento(memento0)//改变发起者状态originator.Set("B")//为发起者创建第二条备忘录memento1 := originator.CreateMemento()//在管理者中加入该备忘录caretaker.AddMemento(memento1)//再次改变发起者状态originator.Set("C")//为发起者创建第三条备忘录memento2 := originator.CreateMemento()//在管理者中加入该备忘录caretaker.AddMemento(memento2)fmt.Println("此时管理者应该有三条备忘录:")for _, memento := range caretaker.mementoArray {fmt.Printf("%+v\n", memento)}fmt.Println("=========回滚测试===========")originator.RollBack(caretaker.GetMemento(1))fmt.Println("=========回滚测试===========")originator.RollBack(caretaker.GetMemento(0))
}
  • 输出
创建一条备忘录:&{state:A}
向管理者中添加一条备忘录:&{state:A} 
发起者状态更改为: B
创建一条备忘录:&{state:B}
向管理者中添加一条备忘录:&{state:B} 
发起者状态更改为: C
创建一条备忘录:&{state:C}
向管理者中添加一条备忘录:&{state:C} 
此时管理者应该有三条备忘录
&{state:A}
&{state:B}
&{state:C}
=========回滚测试===========
获取到第 1 条备忘录信息为:&{state:B}
发起者状态回滚至:&{B}
=========回滚测试===========
获取到第 0 条备忘录信息为:&{state:A}
发起者状态回滚至:&{A}

2.3 类图

Originator
-string:State
+CreateMemento()
+RollBack(m *Memento)
+Set(state string)
+Get()
Memento
-String:State
+Get()
Caretaker
+[]*Memento:mementoArray
+AddMemento(m *Memento)
+GetMemento(index int) : Memento

在这里插入图片描述

http://www.mmbaike.com/news/100626.html

相关文章:

  • 甘肃网站建设公司百度升级最新版本下载安装
  • 义乌制作网站开发如何做营销活动
  • 杭州网站建设公司排名seo网站推广招聘
  • 百度网站考核期腾讯广告代理
  • 中国洛阳网seo排名是什么意思
  • 魔都网站建设世界球队最新排名
  • 有没有教做韩餐的网站厦门seo排名扣费
  • 做网站1200百度小说搜索风云榜排行榜
  • 搜索引擎优化人员优化seo导航站
  • 网站做移动适配以后可以取消吗泉州排名推广
  • 网站设计公司收费标准谷歌seo和百度区别
  • 企业网站里面的qq咨询怎么做安徽企业网站建设
  • 用什么软件做网站最简单网站排名优化客服
  • 许昌哪里做网站wordpress官网入口
  • 福安网站建设淘宝店铺推广方法
  • txt做网站 插入图片自媒体培训
  • 最近下载的网站怎么找如何建造自己的网站
  • 企业公司动态网站设计与实现重庆疫情最新数据
  • 淘宝网站是哪个公司做的今日国际新闻头条15条
  • 网站着陆页有多少个东莞整站优化
  • 新乡商城网站建设哪家专业竞价推广遇到恶意点击怎么办
  • 电商网站建设成本360优化大师软件
  • 网站建设的关键个人网站制作流程
  • 个人网站做淘宝客教程淘宝推广软件
  • 兴县做网站的公司seo公司优化方案
  • 青岛网站制作网站优化 seo和sem
  • app和网站开发哪个难百度客服24小时电话
  • 租用微信做拍卖网站技能培训机构排名前十
  • 室内装修3d动态演示效果图seo优化软件有哪些
  • 如何注册电商平台关键词优化的技巧