package strategy;
public class Strategy {
public static void main(String[] args){
Person p=new Student("李白");
GoDestination where=new GoDestination(p); //name传递有待考究
Person t=new Teacher("苏轼");
GoDestination wheree=new GoDestination(t);
}
}
class GoDestination{ //有一坨东西都要做的事
public GoDestination(Person p){
System.out.println(p.getName()+p.howToGo()+"去了"+p.destination());
}
}
abstract class Person{ // 类似一个东西的模板,继承之后有他的性质,快速复制小人,利用多态直接传小人的性质
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public String howToGo(){
return "走路";
}
public abstract String destination();
}
class Student extends Person{ //继承老大,
public Student(String name){
this.setName(name);
}
public String howToGo() { //重写,多态时先执行重写的方法
return "骑单车";
}
public String destination(){
return "学校";
}
}
class Teacher extends Person{
public Teacher(String name) {
this.setName(name);
}
public String destination(){
return "学校";
}
}
Java设计模式之策略模式
最新推荐文章于 2024-09-12 17:23:35 发布
本文探讨了策略模式在Java中的应用,通过创建Student和Teacher类,展示如何使用策略接口实现在不同角色(学生骑单车、教师步行)下行为的切换。Person抽象类定义了通用的行为,具体实现由子类决定。
摘要由CSDN通过智能技术生成