package designpattern.mediator; public interface Mediator { public void commit(String memo, User sender); }
用户类(抽象同事类):git
package designpattern.mediator; public abstract class User { protected Mediator mediator; public User(Mediator mediator) { this.mediator = mediator; } }
仓库全部者类(具体同事类):ide
package designpattern.mediator; public class Owner extends User { public Owner(Mediator mediator) { super(mediator); } public void commit(String memo) { mediator.commit(memo, this); } public void receive(String memo) { System.out.println("全部者收到信息:" + memo); } }
开发者类(具体同事类):this
package designpattern.mediator; public class Developer extends User { public Developer(Mediator mediator) { super(mediator); } public void commit(String memo) { mediator.commit(memo, this); } public void receive(String memo) { System.out.println("开发者收到信息:" + memo); } }
GitHub类(具体中介者类):spa
package designpattern.mediator; public class GitHub implements Mediator { Owner owner; Developer developer; public void setOwner(Owner owner) { this.owner = owner; } public void setDeveloper(Developer developer) { this.developer = developer; } @Override public void commit(String memo, User sender) { if (sender == owner) { developer.receive(memo); } else { owner.receive(memo); } } }
客户端:3d
package designpattern.mediator; public class Client { public static void main(String[] args) { GitHub gitHub = new GitHub(); Owner owner = new Owner(gitHub); Developer developer = new Developer(gitHub); gitHub.setOwner(owner); gitHub.setDeveloper(developer); owner.commit("我新建了一个项目"); developer.commit("我帮你改了一个BUG"); } }
结果输出:code
开发者收到信息:我新建了一个项目
全部者收到信息:我帮你改了一个BUG