发文初衷:为什么突发奇想要对Java的设计模式做研究,首先由于本人以前对设计模式概念比较模糊,自从本人改过自新之后,决定对以前所以模棱两可的东西,都会进行一一的系统详细的学习。正巧公司最近项目当中遇到了设计模式中的策略模式,所以本人写下自己的心得的思考。
个人观点:I Think 所有的设计模式都在实际的项目开发中由大牛么,通过不断的向上抽取,最终得到一种比较好的方式来使我们的开发更加的方便。
模式的应用场景:百货商场的收银系统,由于商场都会有自己的会员制度,所以每一件商品针对不同的用户群体都会有相应的价格。本文举例的角色用户:普通用户,会员,超级会员,在针对每一个商品的计算方式都大不相同,也许有人会说,那这个还不简单,编写一个函数,通过参数传递的不同做不同的计算。你可能会这样去做,但是在实际的业务逻辑当中,也许上面的三个角色并不是你想想的只是简单的计算而已。也许会有给会员积分,也许会有将不同的用户群体以不同的方式进行存储以便以后,针对不同用户进行精准推送。当然这些问题都可以通过最基本的 i f ----else 的方式进行解决,但是想过没有如果另外一个人来对你的业务进行维护。别人可能看的都会比较头大。那么策略模式是一种很好解决i f ---else这种传统的方式。好不多说,看代码
这是定义的一个接口,里面只是一个简单的计算方法,但是在实际的业务逻辑当中会有其他的操作,具体应按照业务逻辑而定
下面分别被:普通用户、会员、超级会员继承
这样当所有的业务逻辑变的复杂的时候,我们只需要在相应的角色用户中进行相应的修改,或者添加相应的业务逻辑,那么当下一个人接收你的项目的时候,别人就能会快的熟悉你的代码逻辑以及项目逻辑。让别人快速融入到项目当中。
下面是用户调用:相关类
注:本人是从事android开发,可能有些控件问题只有相应的android coder才能看懂,暂时没有用纯java的方式,在此非常抱歉,
总结:策略模式其实就是if --else的高度抽象升级(个人理解),作为一名有理想的coder,总是会希望自己的东西能够的到别人的认可和被别人快速理解,策略模式是其中一种能够快速让人理解的模式之一。在实际的项目开发中希望大家能根据项目需求,合理的选择好的方式。不管对自己还是他人都是一个帮助和成长,有不同理解的coder希望能听到你们的留言,本人会以最快的方式和大家讨论。最后,喜欢的人,留下你们的点赞,不喜勿喷,谢谢