// 一个维修汽车厂系统包括,小车维修、公交维修、验收
// 小车
class Car{
// 维修
public void repair();
}
// 公车
class Bus{
// 维修
public void repair();
}
// 维修人员
class Repairer{
public void doRepair();
}
// 验收人员
class Checker{
public void doCheck();
}
// 老板不可能管的那么细,他需要雇佣一个经理 class Leader{ private Repairer repairer; private Checker checker; public void repair(); public boolean check(); } public class TestFacade { public void test(){ // 老板接一个单子时,直接叫经理去修车,然后再问经理是否完成,这个经理就是一个外观 Leader leader = new Leader(); // 通知经理修车,不管经理下面有多少个维修人员,验收人员 leader.repair(); boolean isOk = leader.check(); } }
interface ILeader{
public void doSomething();
}
class LeaderA implements ILeader{
@Override
public void doSomething() {}
}
class LeaderB implements ILeader{
@Override
public void doSomething() {}
}
class Boss {
ILeader leader;
public void setLeader(ILeader leader) {
this.leader = leader;
}
public void doSomething(){
this.leader.doSomething();
}
}
public class TestBirdge {
public void test(){
Boss boss = new Boss();
LeaderA leaderA = new LeaderA();
boss.setLeader(leaderA);
boss.doSomething();
// 当某个经理离职的时候,老板可以再找一个有经验的经理来做事,
LeaderB leaderB = new LeaderB();
boss.setLeader(leaderB);
boss.doSomething();
}
}
interface ICar{
public void run();
}
class Car implements ICar{
@Override
public void run() {
}
}
// 现在想给汽车添加 氮气加速
// 下面用子类化方式实现
class SubClassCar extends Car{
@Override
public void run() {
this.addNitrogen();
super.run();
}
public void addNitrogen(){}
}
// 下面用装饰模式实现
class DecoratorCar implements ICar{
private Car car;
@Override
public void run() {
this.addNitrogen();
car.run();
}
public void addNitrogen(){}
}
public class TestDecorator {
public void test(){
}
// 一个顾客要买房
class Customer{
public void sellHouse(){
}
}
class Proxy {
private Customer customer;
public void buyHouse(){
customer.sellHouse();
}
}
public class TestProxy {
public void test(){
// 一个买家要买房的话直接跟中介(代理)大交道就可以了
Proxy proxy = new Proxy();
proxy.buyHouse();
}
}