博客差不多半年没动了,换了工作之后,面试过程中,知道了自己有哪些不足。不过都是记录在笔记上。还有个人对工作的一些思考,习惯的调整, 方向的确定等等。
设计模式会问,其实更会用,深入框架的话,这算一个基础。设计模式在博客被人写烂了。不过我还是要继续写,我笔记也记过,不过零零散散,不系统。还有重新定下心好好看书。决定慢慢地把这个系列写出来。读的是Head First的设计模式。
开篇的鸭子就是策略模式。模式这种东西不应该自己想死。而是多思考,为什么那样不行,那样写死有什么坏处。以后拓展会怎样。多思考,还是多思考。
以平时上班交通工具为例:
/**
* @author Administrator
* 上班交通工具的接口
*/
interface WorkVehicle {
void go();
}
/**
* @author Administrator
* 地铁
*/
public class Subway implements WorkVehicle{
@Override
public void go() {
System.out.println("too many people!");
}
}
public class Walk implements WorkVehicle{
@Override
public void go() {
System.out.println("too far!");
}
}
/**
* @author Administrator
* 一个程序员日常上班
*/
public class Programmer {
public WorkVehicle vehicle;
public WorkVehicle getVehicle() {
return vehicle;
}
public void setVehicle(WorkVehicle vehicle) {
this.vehicle = vehicle;
}
public void feeling(){
vehicle.go();
}
public static void main(String[] args) {
Programmer you = new Programmer();
you.setVehicle(new Walk());
you.feeling();
you.setVehicle(new Subway());
you.feeling();
}
}
策略模式定义了算法族,封装之后能够相互替换。让算法的变化独立于使用算法的客户。
相当于定义了多种交通方式,程序员相当于使用它的客户。可以替换不同的交通方式。
缺点很明显:就是你首先必须知道有哪些实现方式。而不是单单调用一个方法,系统会智能的帮你安排最完美的交通工具。
优点是比继承更好的方式,当交通方式除外还有买什么早餐这个东西的时候,你能将不同的东西组合在一起。具有很大的弹性。
你在翻外国的书籍的时候会发现一个很特别的特点,技术人员不是特别的呆板。各种搞怪卖萌。技术是一件很酷的东西,很庆幸一直以来能保持着这股热情。所以需要继续追寻下去。今天的策略模式比较简单,我们暂时就到这里~