![]()
/**
* @Author zh
* @Description英雄的实体类
* @Date 2021/12/7
*/
public class Hero implements Serializable{
//要构造的是英雄的名字 技能和装备
private String name;
private String skill;
private String equip;
public abstract class HeroAbstract {
//1.要有一个英雄对象
public Hero hero =new Hero();
//2.有三个抽象方法 用来构造英雄的三个属性
public abstract void buildName();
public abstract void buildSkill();
public abstract void buildEquip();
//3.吧对象返回
public Hero getHero() {
return hero;
}
}
public class HeroZs extends HeroAbstract {
@Override
public void buildName() {
hero.setName("小乔");
}
@Override
public void buildSkill() {
hero.setSkill("......");
}
@Override
public void buildEquip() {
hero.setEquip("啥也没有.....");
}
}
public class HeroDirector {
//构造者抽象对象
public HeroAbstract heroAbstract;
//2.提供一个构造器方法,用来接受具体的对象
public HeroDirector(HeroAbstract heroAbstract) {
this.heroAbstract = heroAbstract;
}
//3.最终返回的是产品对象,构造目标
public Hero constructHero(){
heroAbstract.buildName();
heroAbstract.buildSkill();
heroAbstract.buildEquip();
return heroAbstract.getHero();
}
}
* 1.要有产品类 /例子里的实体类
* 2.构造的抽象类
* 3.构造的抽象类的重写类
* 4.管理类
* 5.测试类
*/
public class TMain {
public static void main(String[] args) {
//1.抽象类的实际对象
HeroAbstract heroAbstract = new HeroZs();
//2.指挥者对象(构造对象的管理者)
HeroDirector heroDirector = new HeroDirector(heroAbstract);
//3.调用指挥者的构造方法
Hero hero = heroDirector.constructHero();
System.out.println(hero);
System.out.println("================================");
HeroAbstract heroAbstract1 =new HeroLs();
HeroDirector heroDirector1 =new HeroDirector(heroAbstract1);
Hero hero1 = heroDirector1.constructHero();
System.out.println(hero1);
}
}