设计模式-笔记(三)

设计原则:

多用组合,少用继承

 

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

 

----设计谜题解答----
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() {
// 玩具电动车
}
}

你可能感兴趣的:(设计模式,算法,Go)