首先,我们需要定义角色类(Character)及其子类 Man 和 Female:

public abstract class Character {
    protected Race race;
    protected Gender gender;
    protected Job job;

    public Character(Race race, Gender gender, Job job) {
        this.race = race;
        this.gender = gender;
        this.job = job;
    }

    public abstract void display();
}

public class Man extends Character {
    public Man(Race race, Job job) {
        super(race, Gender.MAN, job);
    }

    @Override
    public void display() {
        System.out.println('This is a man of ' + race + ' race, working as a ' + job + '.');
    }
}

public class Female extends Character {
    public Female(Race race, Job job) {
        super(race, Gender.FEMALE, job);
    }

    @Override
    public void display() {
        System.out.println('This is a woman of ' + race + ' race, working as a ' + job + '.');
    }
}

接着,我们需要定义种族类(Race)及其子类 Human、Dwarf、Orc 和 Tauren:

public interface Race {
    String toString();
}

public class Human implements Race {
    @Override
    public String toString() {
        return 'Human';
    }
}

public class Dwarf implements Race {
    @Override
    public String toString() {
        return 'Dwarf';
    }
}

public class Orc implements Race {
    @Override
    public String toString() {
        return 'Orc';
    }
}

public class Tauren implements Race {
    @Override
    public String toString() {
        return 'Tauren';
    }
}

然后,我们需要定义职业类(Job)及其子类 Warrior、Mage、Priest 和 Hunter:

public interface Job {
    String toString();
}

public class Warrior implements Job {
    @Override
    public String toString() {
        return 'Warrior';
    }
}

public class Mage implements Job {
    @Override
    public String toString() {
        return 'Mage';
    }
}

public class Priest implements Job {
    @Override
    public String toString() {
        return 'Priest';
    }
}

public class Hunter implements Job {
    @Override
    public String toString() {
        return 'Hunter';
    }
}

最后,我们需要定义桥接类(Bridge)来连接角色、种族和职业:

public class Bridge {
    public static void main(String[] args) {
        Character manWarrior = new Man(new Human(), new Warrior());
        Character femaleMage = new Female(new Orc(), new Mage());

        manWarrior.display();
        femaleMage.display();
    }
}

输出结果为:

This is a man of Human race, working as a Warrior.
This is a woman of Orc race, working as a Mage.

桥接模式的优势:

  • **解耦角色、种族和职业:**桥接模式将角色、种族和职业的实现分离,使得它们可以独立变化,不会相互影响。
  • **灵活组合:**通过桥接模式,我们可以自由组合不同的性别、种族和职业,创建出各种各样的角色。
  • **易于扩展:**如果需要添加新的性别、种族或职业,只需要添加新的类,而不需要修改现有的代码。
Java 桥接模式:设计游戏角色创建系统

原文地址: https://www.cveoy.top/t/topic/nS4h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录