Advertisement

设计模式--策略式格局(Strategy Pattern)

阅读量:

粗俗的理解

一个设计优良的程序应当具备根据具体情境灵活调整部分功能的能力,而无需对整体代码结构进行大规模改动,同时应具备出色的可扩展性能。

一个你可能使用过的例子

在Java开发环境或Android平台中所涉及的LayoutManager组件。

复制代码
    View.setLayoutManager(gridLayout);
    
    
    AI写代码java
    
    运行

倘若未来出现新的需求,需要调整布局样式时,是否只需对setLayoutManager的参数进行更改,而无需对整个程序进行大规模的改动。

问题引入

这里提出一个广为人知的Duck(鸭子)问题,完整内容可参考《 Head First Design Patterns 》。
设想一个鸭子游戏,其中包含多种不同的鸭子类型,例如绿头鸭、橡皮鸭、木头鸭等。这些种类之间存在许多共通的行为方式,因此在实现这些鸭子时,可以通过定义一个公共的父类,并让各类鸭子继承该父类,从而减少代码冗余。
例如,在父类中可以设定飞行、发出叫声以及浮水等行为。
这一思路看似合理且逻辑清晰,但在实际开发过程中却暴露出一些问题:比如木头鸭是否具备飞行能力?橡皮鸭是否也会发出“嘎嘎”的叫声?实际上橡皮鸭的叫声更像是“吱吱~”的声音。虽然可以通过重写父类中的方法来调整

全部评论 (0)

还没有任何评论哟~