周三,9:00,我刚刚坐到位置,打开电脑准备开始干活。
“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑。还不等大家坐稳,老
大就开讲了,
“告诉大家一个好消息,昨天终于把牛叉模型公司的口子打开了,要我们做悍马模型,虽然是第一个
车辆模型,但是我们有能力,有信心做好,我们一定要…(中间省略20 分钟的讲话,如果你听过领导人的
讲话,这个你应该能够续上)”
动员工作做完了,那就开始压任务了,“这次时间是非常紧张的,只有一个星期的时间,小三,你负责
在一个星期的时间把这批10 万车模(注:车模是车辆模型的意思,不是香车美女那个车模)建设完成…”
“一个星期?这个…,是真做不完,要做分析,做模板,做测试,还要考虑扩展性、稳定性、健壮性
等,时间实在是太少了”还没等老大说完,我就急了,再不急我的小命就折在上面了!
“那这样,你只做实现,不考虑使用设计模式,扩展性等都不用考虑”老大又把我压回去了。
“不考虑设计模式?那…”
哎,领导已经布置任务了,那就开始死命的做吧,命苦不能怨政府,点背不能怪社会呀,然后就开始
准备动手做,在做之前先介绍一下我们公司的背景,我们公司是做模型生产的,做过桥梁模型、建筑模型、
机械模型,甚至是一些政府、军事的机密模型,这个不能说,就是把真实的实物按照一定的比例缩小或放
大,用于试验、分析、量化或者是销售等等,上面提到的牛叉模型公司专门销售车辆模型的公司,自己不
生产,我们公司是第一次从牛叉模型公司接单,那我怎么着也要把活干好,可时间很紧张呀,怎么办?
既然领导都说了,不考虑扩展性,那好办,我先设计个类图:
public abstract class HummerModel {
/*
* 首先,这个模型要能够被发动起来,别管是手摇发动,还是电力发动,反正
* 是要能够发动起来,那这个实现要在实现类里了
*/
public String name;
public HummerModel(String name) {
this.name=name;
}
/*
* 首先,这个模型要能够被发动起来,别管是手摇发动,还是电力发动,反正
* 是要能够发动起来,那这个实现要在实现类里了
*/
protected abstract void start();
//能发动,那还要能停下来,那才是真本事
protected abstract void stop();
//喇叭会出声音,是滴滴叫,还是哔哔叫
protected abstract void alarm();
//引擎会轰隆隆的响,不响那是假的
protected abstract void engineBoom();
//那模型应该会跑吧,别管是人推的,还是电力驱动,总之要会跑
final public void run() {
//先发动汽车
this.start();
//引擎开始轰鸣
this.engineBoom();
//喇嘛想让它响就响,不想让它响就不响
if(this.isAlarm()){
this.alarm();
}
//到达目的地就停车
this.stop();
}
//钩子方法,默认喇叭是会响的
protected boolean isAlarm(){
return true;
}
}
public class Smark extends HummerModel {
private String name;
public static boolean falg=true;
public Smark(String name) {
super(name);
this.name=name;
}
@Override
protected void start() {
System.out.println(name+"开启了");
}
@Override
protected void stop() {
System.out.println(name+"停止了");
}
@Override
protected void alarm() {
System.out.println(name+"喇叭挡挡的");
}
@Override
protected void engineBoom() {
System.out.println(name+"发送机嘀嘀的");
}
@Override
protected boolean isAlarm() {
// TODO Auto-generated method stub
return falg;
}
private void setAlarm(boolean b) {
// TODO Auto-generated method stub
falg=b;
}
public static void main(String[] args) {
Smark smark=new Smark("大奔");
smark.setAlarm(false);
smark.run();
}
}