public class DesignerPattern {
public static void main(String[] args) {
Mediator mediator = new Mediator();
Order order = new Order("Tom", mediator);
mediator.setOrder(order);
Seller seller = new Seller("Jerry", mediator);
mediator.setSeller(seller);
order.request();
seller.request();
}
}
abstract class Person {
protected String name;
protected Mediator mediator;
public Person(String name, Mediator mediator) {
this.name = name;
this.mediator = mediator;
}
}
class Order extends Person {
public Order(String name, Mediator mediator) {
super(name, mediator);
}
public void request() {
System.out.println(name + " want a house.");
mediator.operate(this);
}
public void response() {
System.out.println("Good, " + name + " want a car.");
}
}
class Seller extends Person {
public Seller(String name, Mediator mediator) {
super(name, mediator);
}
public void request() {
System.out.println(name + " have a car.");
mediator.operate(this);
}
public void response() {
System.out.println("Good, " + name + " have a house.");
}
}
class Mediator {
private Order order;
private Seller seller;
public void operate(Person person) {
if (person == seller) {
order.response();
} else {
seller.response();
}
}
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
public Seller getSeller() {
return seller;
}
public void setSeller(Seller seller) {
this.seller = seller;
}
}