设计模式概述(软件工程)

策略模式:在策略模式中,对于某个确定的任务会有很多种不同的算法,client可以根据需要动态切换算法,而不是在代码中定死究竟究竟使用哪个算法,或者究竟怎么使用算法。具体方法是为不同的算法构建抽象接口,利用delegation委派完成代码,并在运行时动态传入client所倾向的算法类实例。

模板模式:模板模式主要适用于下面的情况——有两个步骤类似的算法,它们所作用的数据类型不同,但对数据类型的具体操作流程类似。使用模板模式的编程可以解决这个问题。其中,共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现。模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。一般来说,程序员会使用继承和委托方法来实现模板模式。

迭代器模式:客户端希望对放入容器/集合类的一组ADT对象进行遍历访问,而无需关心容器的具体类型。也就是说,不管对象被放在哪里,都应该提供同样的遍历方式。具体的迭代器有抽象迭代器(abstract iterator),精确迭代器(concrete iterator),同时还有一些名为聚合接口(aggregate interface)的结构。

Iteratable接口是一种常用的接口,其中Iterate表示该接口的容器对象是可以迭代遍历的。迭代器模式可以让自己的集合类实现Iteraable接口,并实现自己的独特Iterator迭代器(具有最基础的hasNext,next,remove三个功能),允许客户端利用这个迭代器进行显式或者隐式的迭代遍历。

 

访问者模式:访问者模式是七种设计模式中的最后一种,它允许在运行时间内对某个对象进行一次或多次操作,即将这个操作与对象的结构解绑。该操作可以灵活更改而无需更改这个操作被访问的类。有点类似于编程的模块化。在本质上,访问者模式是将作用于数据上的某种特定操作,或者某些特定操作,分离开来。

迭代器模式以便利的方式访问集合数据而无需暴露其内部表示,将“遍历”这项功能delegate到外部的iterator对象。访问者模式在特定抽象数据型上执行某种特定操作,但该操作不在抽象数据型内部实现,而是委派到独立的访问者模式对象,客户端可以在不影响抽象数据型本身的情况下灵活地对访问者模式的操作算法进行扩展或改变。

此外,访问者模式还强调外部定义对某种抽象数据型的操作,出人意料的是,这个从挨揍与抽象数据型本身的关系并不大,只是简简单单的访问了抽象数据型而已,因此抽象数据型内部只需要开放接受访问者的算法,通过它来设定访问者操作并在外部使用。

 

client是站在外部的角度,对抽象数据型进行灵活的各种操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值