设计模式[去粗取精]--策略模式

    Design Pattern的重要性众人皆知,小弟学习之有些许时日,在此将自己所想所思记录之。

    大家多多指点,小弟感激不尽。

 

    策略模式 (Strategy)

 

    策略模式展现了设计模式中最基本、最常用,同时也最重要的一些原则:

 

    原则 1. 封装变化

    代码中总是会有一些 “将来可能会变化” 或 “需要在运行时动态切换” 的片段,将这些变化的片段与那些不变的片段分离开来,多数情况下是十分必要的。否则很容易使代码变得臃肿、难以维护。

 

    How to do:

    将某一类“变化”的操作(其实就是方法,这些方法会有各种各样的版本的实现,这种多样性从一种动态发展的角度去看就称其为变化)封装成接口,各种具体的操作就可以实现这个接口得到扩展。这个接口和它的实现类,称作一个算法簇。你可以有好多算法簇。这样不变的部分,就和变化的部分分开了,且变化的部分也有了良好的组织,以备不变的部分来调用。

 

    原则 2. 多用组合,少用继承

    继承并不总是好的,考虑这种情况:它强行的将父类的特性附加给了那些不需要这些特性的子类们,使得子类还要编写额外的代码来屏蔽这些特性。

 

    How to do:

    我们将变化的部分(b类) 和 不变的部分(A类)分离了,那他们两者又如何联系呢。一般来讲,都是由不变的部分 调用 变化的部分提供的服务,所以,我们需要在 A 中声明一个 b 的变量,同时为了能够在任何时候都有改变 b 的实现的能力,最好给 b 提供 getter 和 setter 方法。

 

    少用继承,并不是不用继承。需要用继承的地方自然还是要用。如:A类 中某些属性或方法是 A 这类事务所特有的、统一不变的,那么就把这些属性或方法放在 A 类中,而  A 类的各个子类所特有的属性和方法,自然就可以写在各个子类中了。

 

    原则 3.针对接口编程,不针对实现编程

    把实现类的类型作为引用变量类型,那么变量只能引用这一种类型,若是换作实现类的接口类型,那么就可以随时更换实现了。

 

    How to do:

    在步骤2中,将算法簇的接口做为 A 类中引用的类型,在使用时,只要将需要的实现类的实例set进去就可以了。

 

有这样一类成功者:他们经商致富,于居室外置庭院,院中有亭翼然,亭上挂一面额。此时倘有人将“醉翁亭”题至编额中。主人公拍手称快道:“妙哉!”而若将“饮酒亭”题至匾额中,主人则不假思索道:“俗哉!”此类人追求文人本题。但实际上胸无点墨,只管把自己强行嵌入“雅”的框架中,就如同大观园中只顾赏花却不懂花的“伪君子”,总不免贻笑大方。 自古以来,世上总有各种困在框架里而不自知的人。他们如流水般虚浮,惯于遵从过去的经验或偏听一家之言,拘泥于既定枢架范式中。这些框架如同牢笼,让人的思维日渐固化,仿佛被“囚”于牢笼中,不见天日。归根结底,还是人本身缺乏硬实力所致。 在崇尚理学的明清时期,几乎所有人都成了封建社会值硬刻板的“木偶人”。可曹雪芹却通过笔下两个鲜明的角色,跳出了框架的束缚。此二人便是贾宝玉和林黛玉。他们不仅才华横溢,也在教育的熏陶中造就了自己独特的思维方式。这是一种因时因地制宜而去伪存真、去粗取精的思维方法,这样的方法可以教会一个人不要只顾跟随领跑者,而要学会超越领跑者,我愿称之为“宝黛思维”。 春秋时期的美女西施,天生丽质,举手投足间都流露着妩媚与柔情,而那些仰慕西施不顾现实加以效仿的人,不仅失去自己的特点,还闹出东施效颦的笑话。在全民创造短视频的热潮中,李子柒结合自己的兴趣与特长,对中国传统文化加以创新,以最具时代特征的形式,推动中国文化走向世界。由此可见,我们为人处世应当学习“宝黛思维”,以因地制宜为前提,实破框架束缚,勇于创新,方能成事。 虽说“他山之石,可以攻玉”。但真正的好玉,还得用心细“攻”,而非“一锤定音”,强行为之套上框架。只有培养并运用“宝黛思维”,才不会在山清水秀时自我陶醉而落入俗套,才不会在山穷水尽时野驴技穷而止步不前。只有跳出框架的人,才能知所进,知所惧,知所适。识时务。 “宝黛思维”可激发人的潜力,帮助我们脱去少年的程格。少年的我们唯有善用“宝黛思维”,方可跳出“囚人”的框架,释放知识和人生的光彩。 总结大意
02-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值