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