观察者模式(行为型) 发表于 2018-03-21 分类于 Design Pattern Waline: 本文字数: 11k 阅读时长 ≈ 10 分钟 前言 在网站博客系统中,当我们对某个博主的博客空间比较感兴趣的时候,都会选择订阅该博客,这时候就使我们很方便的获取到博主博客的更新文章了,当我们订阅的博客有更新变化时,它们也自动推送相应的更新通知给所有订阅该博客的订阅者,同时,作为订阅者,可以订阅多个博主博客。像这种一对多的对象之间的依赖关系,一个对象的改变能够影响其他对象的行为,可以通过观察者模式来实现。 阅读全文 »
访问者模式(行为型) 发表于 2018-03-03 分类于 Design Pattern Waline: 本文字数: 10k 阅读时长 ≈ 9 分钟 前言 在大型体育馆中有各种体育项目,如羽毛球室,乒乓球室,篮球室等等,每种运动项目场地里面会有各种职业背景的体育爱好者,如学生,职工,老师;同时对于同一种职业背景的体育爱好者,可以访问多种运动项目。在软件开发中,有时候我们也需要处理像体育馆这样的不同的运动场所集合对象结构,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的元素的操作方式并不唯一,可能需要提供多种不同的处理方式,还有可能增加新的处理方式等等。对于此类问题可以通过访问者模式来解决,因为其模式动机就是以不同的方式操作复杂对象结构。 阅读全文 »
责任链模式(行为型) 发表于 2018-02-15 分类于 Design Pattern Waline: 本文字数: 17k 阅读时长 ≈ 16 分钟 前言 在公司请年假的时候,需要首先在TMS系统提出申请,在提出申请的时候,发现申请不同的时间长短,审批的领导不一样,如不超过但是包括1天由科长(Section Chief)审批,超过1天但是不超过3天由部长(Minister)审批,超过3天以上由主任(Director)审批。在这个审批流程中,我们的年假请求沿着一条链在传递,每个请求处理者都根据请求的具体情况在自己的处理范围内进行审批,有一种专门用于处理这种请求链式传递的模式,它就是本章将要介绍的职责链模式。 阅读全文 »
迭代器模式(行为型) 发表于 2018-02-01 分类于 Design Pattern Waline: 本文字数: 13k 阅读时长 ≈ 12 分钟 前言 在C++ STL标准库里面有各种容器对象,如vector,list,map等等,对这些容器对象的遍历操作时候,都是首先获取相应容器的迭代器,再通过迭代器的begin方法,++操作符,end方法来遍历整个容器对象内的各个元素,使得容器对象的元素存储操作和遍历操作分离了,这样的好处是对于同一个类型的容器对象可以通过不同的遍历方法来遍历,同样的,不同的类型的容器对象也可以通过相同的遍历方法来进行。像STL标准库里面的这种解耦数据存储和遍历操作的方法就是本文将要介绍的迭代器模式。 阅读全文 »
策略模式(行为型) 发表于 2018-01-20 分类于 Design Pattern Waline: 本文字数: 11k 阅读时长 ≈ 10 分钟 前言 在出去旅游的时候,有很多种交通方式均能达到旅游的目的地。可以选择汽车,方便自由,也可以选择火车,速度较快,也可以沿途看风景,路程较远可以选择飞机,时间快。实现某一个功能有多条途径,每一条途径对应一种算法,此时我们可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径,这就是本章要将要介绍的策略模式。 阅读全文 »
状态模式(行为型) 发表于 2018-01-02 分类于 Design Pattern Waline: 本文字数: 12k 阅读时长 ≈ 11 分钟 前言 在dota即时对战中,不同的时期,战争的行为是不一样的。如在游戏战争前期,主要是辅助英雄包鸡包眼游走gank,后期英雄发育为主,一般不会参与团战,这时候主要以前期辅助英雄为主角;在游戏战争中期,后期英雄发育经过前期的发育,开始与辅助英雄抱团推塔,参加团战,辅助作用慢慢减弱,后期英雄慢慢变强;而在游戏战争的后期,经过前期的发育,中期团战金钱的积累,后期英雄成为了战场的主角,开始带领辅助英雄推高地,占领基地。像这种随着时间的推移,角色对象在不同的状态下具有不同的行为或者状态在某些情况下能够相互转换的行为,可以通过状态模式来解决。 阅读全文 »
命令模式(行为型) 发表于 2017-12-21 分类于 Design Pattern Waline: 本文字数: 24k 阅读时长 ≈ 22 分钟 前言 一般的文档编辑器都会提供一个主菜单(Menu),主菜单中包含一些菜单项(MenuItem),每个菜单项包含很多的命令操作,包括打开命令,创建命令,编辑命令等等,要设计这样的文档编辑系统,可以考虑使用命令模式。 阅读全文 »
模板方法模式(行为型) 发表于 2017-12-01 分类于 Design Pattern Waline: 本文字数: 8.3k 阅读时长 ≈ 8 分钟 前言 在找工作写简历的时候,会发现网上有许多简历模板,这些简历模板都包含一些了解一个求职者的基本信息,包括个人基本信息,教育经历,工作经历等等,还有些非英语专业毕业的还需要包括CET的成绩,若英语专业则不需要。像这种简历模板只提供一个基本的模板,而具体的内容由具体的使用者(具体子类)实现的模式可以通过模板方式模式来实现。 阅读全文 »
中介者模式(行为型) 发表于 2017-11-20 分类于 Design Pattern Waline: 本文字数: 11k 阅读时长 ≈ 10 分钟 前言 在互联网通信高度发达的今天,大家在过节的时候都是通过QQ或微信来发祝福短信,有时候,由于朋友太多,一个一个的发送消息比较麻烦。幸亏QQ和微信有群发的功能,你只需要选择发送的对象,编辑发送一次信息,其他的所有群里的朋友都可以收到祝福了。通过引入群的机制,将极大减少系统中用户之间的两两通信,用户与用户之间的联系可以通过群来实现。这样的类似“群”一样的中间类来协调这些类/对象之间的复杂关系,以降低系统的耦合度的模式就是本篇将要介绍的中介者模式。 阅读全文 »
单例模式(创建型) 发表于 2017-11-05 分类于 Design Pattern Waline: 本文字数: 5.5k 阅读时长 ≈ 5 分钟 前言 有很多时候,为了节约系统资源需要确保系统中某个类只有一个实例存在,当这个实例被创建成功后,无法再创建一个同类型的其他实例,如系统的日志输出,GUI应用必须是单鼠标,操作系统只能有一个窗口管理器,一台PC只能连一个键盘等等,为了确保对象的唯一性可以使用单例模式来实现。 阅读全文 »