策略模式
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
汽车发出声音和启动跑起来 是每辆车可能不同的地方,因此要封装变化,在类中引用这些,即多用组合的形式,少用集成,不要在一个汽车类中集成或实现类和接口,这样不够松散,汽车的子类会完全使用父类的属性,不够灵活,当一个子类的某些属性与父类冲突只有重写。
可以定义ISounder 和 IRunner 的算法族,让算法独立于使用算法的客户,因为源于同一个接口它们之间可以互相替换。
public interface IRunner{
public void gorun;
}
public ASounder implements ISounder{
public void makeSound(){
System.out.println("make voice aaaaaa");
}
}
public ARunner implements IRunner{
public void gorun(){
System.out.println("run with a type");
}
}
public class MyCar extents Car{
public MyCar(){
ISounder = new ASounder();
IRunner = new ARunner();
}
public void display(){
System.out.println("look like mycar ");
}
}
public static void main(String[] args){
Car mycar = new MyCar();
mycar.display();
mycar.makesound();
mycar.gorun();
}