首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式-笔记(三)

2012-11-06 
设计模式-笔记(三)设计原则:多用组合,少用继承?以上笔记介绍的是策略模式:定义了算法族,分别封装起来,让他

设计模式-笔记(三)

设计原则:

多用组合,少用继承

?

以上笔记介绍的是策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

?

----设计谜题解答----
1)一个抽象类:Character,一个接口:WeaponBehavior,剩下八个是类。
2)King,Queen,Troll,Knight继承(extend)Character;
KnifeBehavior,BowAndArrowBehavior,AxeBehavior,SwordBehavior实现
(implement)WeaponBehavior;
Character有一个(has a)WeaponBehavior。
3)setWeapon()应放在Character类中。
--------------------

?

public abstract class Car {
RunBehavior rb;
public void go() {
rb.go();
}
public void setRunBehavior(RunBehavior rb) {
this.rb = rb;
}
public abstract void display();
}

?

public class Bus extends Car {
public Bus() {
rb = new RunWithGasoline();
}
@Override
public void display() {
// 公共汽车
}
}

?

public class CarModel extends Car {
public CarModel(){
rb=new RunNoWay();
}
@Override
public void display() {

// 汽车模型
}
}
public interface RunBehavior {
public void go();
}

?

public class RunWithGasoline implements RunBehavior {
public void go() {
// 用汽油驱动
}
}
public class RunWithElectricity implements RunBehavior {
public void go() {
// 用电力驱动
}
}

?

public class RunNoWay implements RunBehavior {
public void go() {
// 不能行使
}
}

?

现在新增一种玩具电动车:
public class ToyCar extends Car {
public ToyCar(){
rb=new RunWithElectricity();
}
@Override
public void display() {
// 玩具电动车
}
}

热点排行