软件构造七大模式总结

创建型模式

一、工厂模式

        对于一些场景,用户需要使用大类型中的子类型,此时使用工厂类型可以让用户以简单的编号或者代号对子类型进行访问。在一个factory的类中定义一个choose方法,根据输入参数返回对应的需要的子类型。

结构型模式

二、适配器模式

        举例,在某个场景下需要使用某一段现成的库或类,但是目前程序能提供的参数和该库或类需要的参数不一样,因此在此情况下我们不应该贸然去修改库或者在自己的主体里进行修改,而是应该单独写一个适配器对象,将其作为所需接口的一个实现,从而将所实现的功能进行override,将自己的参数改编为所需要的格式,从而使代码更加有条理且便于修改。

三、装饰器模式

        装饰器模式用于实现添加功能。在当前现有的功能上添加一个功能,此时对源码进行修改可能引起已经引用它的程序发生紊乱,同时可能使得测试代码失效。在此时就可以使用装饰器模式。装饰器模式在内部有自己的一个自己添加的功能,其余部分完全继承自它的父类,而实现多个添加效果可以通过多个装饰器的组合嵌套完成,从而在保证核心不变的同时添加功能,也增强了可维护性。

行为型模式

四、策略模式

        对于一个操作,有几种不同的实现方式,用户在使用时需要选择一种方式进行,此时用到策略模式,将一组算法分别定义在一个类里,将这些类继承直同一接口,在使用时用户可以分别进行不同的引用。

五、模板模式

        模板模式适用于一组类似的操作流程,多个子类都符合相同模板的操作,这样对于多个不同的对象都作为他的子类,其中方法不在父类中实现,而是在每个子类中分别实现,此时用户在引用的过程中可以直接使用子类,从而获取对于一个模板的多种分别的实现方式。

六、迭代器模式

        对于一个对象,在需要用户顺序访问同时却不希望暴露内部实现的时候,就应该使用迭代器模式。本身格式如同java中list之类类型的迭代器实现,在写了迭代器之后可以让用户以固定的格式进行顺序访问。

七、访问者模式

        对于一个程序而言,如果对于不同类别的访问对象,需要的内容不尽相同,进行的操作也有差别,此时如果将判断全部写在方法内,会导致有很多的判断语句,而且难以修改。此时使用visitor模式可以将请求进行拆解。在方法主体内设置accept,传入参数是一个visitor,这一部分目的是将操作交给visitor和它的下属方法去操作,最后将操作的结果传回来。而visitor类对应各个不同的访问者对象,其中包含多个不同种类的重载visit操作,实现不同的功能,随后在实际使用时会直接返回直accept的内部,于是用户便可以以不同身份按照不同的要求实现不同功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值