设计模式之策略模式

来源:互联网 发布:学python书籍推荐 编辑:程序博客网 时间:2024/06/06 16:35

今天读了设计模式(Head First)的一种模式--策略模式,大概说一下我对这种模式的理解。

先从对象说起,我们先设定一个鸭子对象,当然这是一个统称,因为鸭子会有各种各样的,比如:水里游得,不同颜色的,不同品种的,甚至毛绒玩具,电动玩具都有基于鸭子模型的。而且它们会有不同的行为,比如:会呱呱叫,吱吱叫,会飞,会游泳,当然也有都不会的。

如果我们程序中设定一个鸭子类(父类),把这些行为都放入到这个类中,然后不同的鸭子继承父类,需要实现父类的方法,这样会有好不必要的代码。然而这还会有一个问题,如果后期多了一个具有其他行为(会说话)的鸭子,我们需要在父类中补上这个行为,同时所有的子类都需要继承父类的这个方法,会不会很头疼......

我们可以这么想,我们设定一个鸭子类,然后把行为分为两种,一种为叫声(各种叫声),一种为动作(各种动作,飞行、游泳等),这两种行为做成两个接口,具体的行为就可以实现行为接口,然后将两个行为接口在父类中声明为两个引用变量。接下来就可以随心所欲的组合了,首先定义一个我们想要的鸭子类,继承父类实现行为接口,如果它不会飞,我们可以添加一个实现类,实现动作接口,重写动作方法为不会飞。如果会吱吱叫,可以添加一个实现类,实现叫声接口,重写叫声方法为吱吱叫。

如此,我们如果后期多了一种会说话的鸭子,我们可以添加一个叫声的实现类,重写方法为会说话,那么我们就不用再去修改别的东西了,是不是特别方便了。

这只是我的一点感想,如果哪里写的不好或者不对,欢迎留言告诉我。

原创粉丝点击