读书笔记---Head First 设计模式--- 策略模式

读书笔记—Head First 设计模式— 策略模式

这几天买了本新书叫Head First设计模式。感觉还不错,可以看的进去,这就开个博客整理一下书里的内容。


稍微介绍一下这本书,我还没有看完,按照我的理解这本书主要讲的是关于类的设计,它没有按照一般教材书那样中规中矩的展现知识,而是用一种引导的方式慢慢的让你理解它的知识。好处是当你刚开始学的时候,会很方便给你理解,但是到你重复学习的时候,可能就会有一丝厌烦了。关于书的信息就介绍到这里,让我来进入正题。


策略模式

策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

正如上面所写的,策略模式其实是一个我们很常用的模式,也许我说多态性你们会更容易懂。它的本质就是利用多态性,将各种算法封装成一个个单独的类,并拥有共同的父类。主类通过包含此父类达到让主类的子类能够自由改变自己的行为,也就是让算法的变化独立于使用算法的客户。
不多说了,上代码。


abstract class Tyre {
    abstract void run();

}

class Rockettyre extends Tyre {

    @Override
    void run() {
        // TODO Auto-generated method stub
        System.out.println("jiu~ jiu~ jiu~");
    }

}

class Simpletyre extends Tyre {

    @Override
    void run() {
        // TODO Auto-generated method stub
        System.out.println("gulu gulu gulu");
    }

}

abstract class Car{
    Tyre tyre;
//  Window window;
//  Color color;
//  ....
    void carrunning() {
        tire.run();
    }
}

class MyCar extends Car{
    MyCar(){
        this.tyre = new Rockettyre();
    }
}

class YourCar extends Car {
    YourCar(){
        this.tyre = new Simpletyre();
    }
}

public class Strategy {




    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Car car = new MyCar();
        car.carrunning();
        car = new YourCar();
        car.carrunning();
    }

}

如上所示,我设计了一个车抽象类和一个轮胎抽象类,车类中包含了轮胎类父类,在车类的子类中通过实例化轮胎的子类,实现轮胎多态化,将算法的变化独立于算法的客户。这样做的好处第一点是在后期的修改,变化时,可以最小范围的修改,使得代码的弹性增强。第二点是,方便整理代码,代码结构显而易见。
附上类图一份。

总结一下:

策划模式是我们极为常见的模式之一,灵活运用多态思维,封装算法族。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值