博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式,我与你的三次相遇。
阅读量:4626 次
发布时间:2019-06-09

本文共 1060 字,大约阅读时间需要 3 分钟。

         从商场打折到机房重构计算固定用户和暂时用户的消费情况,再到如今的Duck,三次接触类策略模式,可见这是一个比較重要的模式.

        在使用策略模式之前,首先要知道什么是策略模式?

策略模式是干吗用的?策略模式有它的优点也必然存在一定的缺陷.

 

    策略模式:

           它定义了算法家族,分别封装起来,让他们之间能够互相替换,此模式让算法的变化独立于使用算法的客户.

 

   策略模式事实上就是用来封装算法的。

当不同的行为堆砌在一个类中,就非常难避免使用条件语句来选择合适的行为。

我们就能够用策略模式,将这些行为封装在一个个独立的Strategy类中。就能够消除这些类中的条件语句了。

 

商场打折:

商场收银时,无论理打折还是返利,都是一些算法。我们把这些算法是可变的,我们把这些变化的封装起来,也实现了面向对象的思维方式。

机房重构:

    做机房收费系统时,我们对暂时用户和固定用户的收费方式是不一样的,可是他们的本质是一样的,都是计算学生的消费金额,这是我们就把它写成策略模式,把两种不同的算法封装起来。

Duck:

     这次又用java语言又一次认识了一下策略模式,鸭子继承Duck。飞行行为实现FlyBehavior接口。呱呱叫的行为实现QuackBehavior接口。事实上鸭子的行为就能够看成算法。万变不离其宗。意思是一样的,封装了鸭子的行为相当于我们封装了算法。

长处:

    策略模式不仅提供了管理各种算法的办法。简化了单元測试,我们能够通过每一个类自己的接口单独測试。避免了我们使用多重条件转移语句。继承有助于吸取出这些算法中的公共功能。

每一种模式都要他存在的优势,不然也不会存在。当然,缺点也是不可缺少,人无完人。模式也没有十分完美的模式。

 

缺点:

    策略模式仅仅适用于client知道全部的算法或行为的情况。并且策略模式会造成非常多策略类。每个详细策略类又会产生一个新类。

        策略模式使用了三次了,第一次用C#,第二次用VB.net,第三次用java。每一次用,感觉都不一样。你问我有什么不一样的。

当然是越来越熟悉的感觉了,嘿嘿。

----------------------------------------------------------------------------------------------------------------------------(^_^)     学习是一个循序渐进,反重复复的过程       (^_^)

转载于:https://www.cnblogs.com/jzdwajue/p/6888044.html

你可能感兴趣的文章
C++回溯法走迷宫
查看>>
查看线程的运行状态
查看>>
vault-in-kubernetes
查看>>
WIN7下,联想A30T通过USB连接上网
查看>>
RequireJS学习笔记(转)
查看>>
从网站上扒网页,保存为file文件格式
查看>>
ng 过滤器
查看>>
视频剪辑软件调研
查看>>
MYSQL语句
查看>>
判断类之间的父子关系
查看>>
读书笔记——《黑客大曝光》(1/8)
查看>>
java基础小总结(2)
查看>>
HDU(1847)Good Luck in CET-4 Everybody!
查看>>
unity中的UI状态机,用于各界面之间的切换和跳转
查看>>
tar命令-压缩,解压缩文件
查看>>
bootstrap 冻结表格,冻结表头
查看>>
Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
查看>>
Centos修改系统语言
查看>>
仿人智能控制器的参数简化(已发表于《计算机测量与控制》2013年第4期)
查看>>
Android学习笔记之progressBar(进度条)
查看>>