方法——抽象的 具体实现——策略
即每一个子类都有一个不同的策略
用来解决 执行流程固定时 执行的结果由于提供了不同的策略而不同
比如
银行类(用来定义流程)
办理业务方法(人){ 人—-抽象类 或 接口(不能产生对象) 只能传递一个子类对象 其执行的结果是子类重写的结果
欢迎用户进来(固定)
叫号(因为不同的人 而不同)
办理(因为不同的人 而不同)
离开(因为不同的人 而不同)
欢迎下次再来(固定)
}
人类(用来提供策略)
提供策略—抽象的 即定义了叫号 办理 离开 具体化交给子类实现
具体类(用来实现策略)
实现策略—-比如具体化叫号 办理 离开
public abstract class Person {protected String name;public String getName(){return this.name;}//进银行取号 等待叫号public abstract void callNum();//到窗口办理业务public abstract void setBusiness();//离开银行public abstract void leave();}
public class YongMan extends Person{public YongMan(){}public YongMan(String name){this.name = name;}public void callNum() {System.out.println("年轻人来到了银行,自己拿到了小票");}public void setBusiness() {System.out.println("年轻人熟悉银行的业务,很快就办理完了业务");}public void leave() {System.out.println("年轻人办理完业务,急冲冲的离开了");}
public class OldMan extends Person{public OldMan(){}public OldMan(String name){this.name = name;}public void callNum(){System.out.println("老年人年纪高了,不熟悉业务,需要帮助");}public void setBusiness() {System.out.println("老人家慢悠悠的在窗口办理业务");}public void leave() {System.out.println("办理完业务后,老人慢悠悠的离开了");}
public class Bank {//等待客户来办理业务public void handleBusiness(Person person){//利用多态的特性 传递参数时只需要传递一个父类这一个对象//就算再多一个类 只需要这个类也继承父类的方法 银行这边的参数也不需要修改System.out.println("欢迎"+person.getName()+"来我们银行办理业务");person.callNum();person.setBusiness();person.leave();}}
