java中多种设计模式的示例总结(代码示例)

一、 Creational patterns创造型模式

1、Factory Method pattern工厂方法模式

什么时候用:
当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。
定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。

常规情况下,client直接创建具体对象
Product p = new ProductTwo();
在工厂方法模式下:
Product p = new ConcreteTwo().makeObject();
工厂方法起到的是信息保护的作用,不需要知道具体的实现类,而只要调用工厂方法创建类。
工厂方法示例:
在这里插入图片描述
在这里插入图片描述

二、 Structural patterns结构型模式
1、Adapter适配器模式
将某个类/接口转换为client期望的其他形式。通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。
适配器示例:
在这里插入图片描述
2、Decorator装饰器模式
把继承和委托结合起来。每个子类实现不同的特性,且将特性进行任意的组合,这时就需要用到装饰器模式了:为对象增加不同侧面的特性,对每一个特性构造子类,通过委派机制增加到对象上。
具体示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
与继承的区别:
装饰器在运行时构成特征

  • 继承在编译时构成特征

装饰器由多个协作对象组成

  • 继承产生一个单一的、有明确类型的对象

可以混合和匹配多个装饰器

  • 多重继承在概念上是困难的

三、Behavioral patterns 行为类模式
1、Strategy 策略模式
当有多种不同的算法来实现同一个任务,但需要client根据需要动态切换算法,而不是写死在代码里时,就需要策略模式:为不同的实现算法构造抽象接口,利用delegation,运行时动态传入client倾向的算法类实例。
代码示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、Template Method 模板模式
– 做事情的步骤一样,但具体方法不同
共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现。
要实现模板方法需要使用继承和重写来完成。模板方法被广泛地用在框架中。
代码示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、Iterator 迭代器
客户端希望遍历被放入容器/集合类的一组ADT对象,无需关心容器的具体类型,也就是说,不管对象被放进哪里,都应该提供同样的遍历方式。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
4、Visitor观察器
对特定类型的object的特定操作(visit),在运行时将二者动态绑定到一起,该操作可以灵活更改,无需更改被visit的类。
本质上:将数据和作用于数据上的某种/些特定操作分离开来。
为ADT预留一个将来可扩展功能的“接入点”,外部实现的功能代码
可以在不改变ADT本身的情况下通过delegation接入ADT。
代码示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值