设计模式(Patterns)

        复习知识点中主要包含了以下几个设计模式:adapter、decorator、strategy、template、iterator/iterable、factory method、visitor。

1、Factory Method Pattern

        定义一个接口,让子类决定实例化到哪个类:一个interface,你一种implement,我一种implement,主函数里new时自己选。

        Trace log1 = new SystemTrace(); 

        Trace log2 = new FileTrace();

        log1来自system,log2来自file,log1和log2都有美好的未来!

2、Adapter Pattern

        将某个类/接口转换为client期望的其他形式。

        当interface中参数形式与client不一致的时候,先另外写一个与client形式一致的class,再在implement中调用它,悄悄地转换成一致的!如下图所示:

 3、Decorator Pattern:组合叠加特性

        在interface定义基础的功能,ArrayStack中实现基础的功能(是一个abstract class),各种implement继承这个abstract class以实现其他的花里胡哨的功能。在client中实现一个普通的class,再一层一层地往上套特性即可。如下图所示:

 4、Strategy Pattern:多种可选算法执行同一个任务

        interface中定义一个算法类(它的名字就是关于“算法类”,提示implement继承它),分不同的implement使用不同的算法进行继承,在client方法中作参数。如下图所示:

 

5、Template Method Pattern 模板模式

        通俗地讲,就是你们都需要完成同样的几件事儿,但是除了事项以外,你们的实现是截然不同的,比如兰博基尼和奥拓都有门、发动机、座椅,但是它们的实现是不同的。

        因此,你只需要在interface中定义出这些“事项”,然后在implement里分别实现,就相当于interface提供了一个模板,实现只是在使用这个模板。

 

 6、Iterator Pattern

        客户端希望对放入容器/集合类的一组ADT对象进行遍历访问,而无需关心容器的具体类型。也就是说,不管对象被放进哪里,都应该提供同样的遍历方式。

        具体的实现步骤是:用Collection interface继承Iterable interface,再用自己的实现完成Collection和Iterable中的Iterator。最终要实现Iterator中的三个方法:boolean hasNext(); E next(); void remove(); 。如下图所示:

7、Visitor Pattern

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

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值