一、策略模式(小任务:银行Bank)
策略模式Strategy------行为型模式的一种
用于解决执行流程固定,执行结果不相同,由于提供了不同的执行策略—结果就不同
银行类
办理业务方法(人){
流程固定
叫一个号码
办理业务
离开
}
用来定义流程
用来提供策略(抽象类 接口)
传递的参数是抽象类或接口
真实执行传递的是子类的对象—多肽
执行结果是子类重写之后的效果
设计一个方法 等待用户来办理业务
Profession
叫一个号码–>排队
去窗口办理–>办理
办理完毕离开–>离开
老人 年轻 土豪
//安照刚才的设计 可能有问题
//1.三个不同的人类方法名不一致(可以)
//2.银行办理业务的方法写了三个
//解决如上所述的问题 可以在三个人类之上创建一个父类
//1.解决三个人类中的相同代码 比如name属性 比如get方法之类的
//2.父类定义的三个方法可以是抽象 解决了子类命名不一致的问题 子类执行也不一致
//3.父类可以作为参数传入银行
调用一个方法 名字一样 传递参数缺不同
1.利用方法重载—静态加载
2.利用多肽效果—动态加载
package bank;
public class Bank{
//开门 等待用户进来办理业务
public void profession(Person person){
System.out.println(person.getName()+"客户进入银行啦");
person.callNumber();
person.transact();
person.leave();
}
}
package bank;
public abstract class Person{
protected String name;
public void setName(String neme){
this.name=name;
}
public String getName(){
return this.name;
}
//1.进银行 叫一个号码 排队
public abstract void callNumber();
//2.去窗口办理
public abstract void transact();
//3.办理完毕离开啦
public abstract void leave();
}
package bank;
public class Toff extends Person{
private String name;
public Toff(){}
public Toff(String name){
this.name =name;
}
//1.进银行 叫一个号码 排队
public abstract void callNumber(){
System.out.println("我是土豪我有钱 不需要叫号排队 直接进入VIP窗口");
}
//2.去窗口办理
public abstract void transact(){
System.out.println(”我是土豪我有钱 甩一张限量黑卡 取1000w 买车“);
}
//3.办理完毕离开啦
public abstract void leave(){
System.out.println(“办理完离开了”);
}
}
package bank;
public class OldMan extends Person{
public OldMan(){}
p