java设计模式进阶_facade

这里写图片描述

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : DwarvenMineWorker.java
//  @ Date : 2016/8/24
//  @ Author : 
//
//



/*
 * DwarvenMineWorker 是一个金矿的子系统
 */
public abstract class DwarvenMineWorker {
    public DwarvenMineWorker() {

    }

    public void goToSleep() {
        System.out.println(name() + " goes to sleep.");
    }

    public void wakeUp() {
        System.out.println(name() + " wakes up.");
    }

    public void goHome() {
        System.out.println(name() + " goes home.");
    }

    public void goToMine() {
        System.out.println(name() + " goes to the mine.");
    }

    public abstract void work();

    public abstract String name();

    private void action(Action action)
    {
        switch(action)
        {
        case GO_TO_SLEEP:
            goToSleep();
            break;
        case WAKE_UP:
            wakeUp();
            break;
        case GO_HOME:
            goHome();
            break;
        case GO_TO_MINE:
            goToMine();
            break;
        case WORK:
            work();
            break;
        default:
             System.out.println("Undefined action");
             break;
        }
    }

    public void action(Action...actions)
    {
        for(Action action:actions)
        {
            action(action);
        }
    }

    public static enum Action
    {
        GO_TO_SLEEP, WAKE_UP, GO_HOME, GO_TO_MINE, WORK
    }
}
//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : DwarvenCartOperator.java
//  @ Date : 2016/8/24
//  @ Author : 
//
//




public class DwarvenCartOperator extends DwarvenMineWorker {

    public void work() {
        System.out.println(name() + " moves gold chunks out of the mine.");
    }

    public String name() {
        return "Dwarf cart operator";
    }
}
//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : DwarvenGoldDigger.java
//  @ Date : 2016/8/24
//  @ Author : 
//
//




public class DwarvenGoldDigger extends DwarvenMineWorker {

    public void work() {
        System.out.println(name() + " digs for gold.");
    }

    public String name() {
        return "Dwarf gold digger";
    }
}
//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : DwarvenTunnelDigger.java
//  @ Date : 2016/8/24
//  @ Author : 
//
//




public class DwarvenTunnelDigger extends DwarvenMineWorker {

    public void work() {
        System.out.println(name() + " creates another promising tunnel.");
    }

    public String name() {
        return "Dwarven tunnel digger";
    }
}
//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : DwarvenGoldmineFacade.java
//  @ Date : 2016/8/24
//  @ Author : 
//
//



/*
 * DwarvenGoldmineFacade提供了一个单一的接口,
 * 用户通过那些方法操作子系统.
 * 这使得金矿容易操作和削减从金矿用户子系统的依赖关系
 * 
 */
public class DwarvenGoldmineFacade {

    private final List<DwarvenMineWorker> workers;

    public DwarvenGoldmineFacade() {
        workers = new ArrayList<>();
        workers.add(new DwarvenGoldDigger());
        workers.add(new DwarvenCartOperator());
        workers.add(new DwarvenTunnelDigger());
    }

    public void startNewDay() {
        makeActions(workers,DwarvenMineWorker.Action.WAKE_UP,DwarvenMineWorker.Action.GO_TO_MINE);
    }

    public void digOutGold() {
        makeActions(workers,DwarvenMineWorker.Action.WORK);
    }

    public void endDay() {
        makeActions(workers,DwarvenMineWorker.Action.GO_HOME,DwarvenMineWorker.Action.GO_TO_SLEEP);
    }

    private void makeActions(Collection<DwarvenMineWorker> workers, Action... actions) {
        for(DwarvenMineWorker worker:workers)
        {
            worker.action(actions);
        }
    }
}


/*
 * 外观(DwarvenGoldmineFacade)提供了简单的接口到子系统.
 */
public class App {

    public static void main(String[] args) {
        DwarvenGoldmineFacade facade = new DwarvenGoldmineFacade();
        facade.startNewDay();
        facade.digOutGold();
        facade.endDay();
    }
}

/*
Dwarf gold digger wakes up.
Dwarf gold digger goes to the mine.
Dwarf cart operator wakes up.
Dwarf cart operator goes to the mine.
Dwarven tunnel digger wakes up.
Dwarven tunnel digger goes to the mine.
Dwarf gold digger digs for gold.
Dwarf cart operator moves gold chunks out of the mine.
Dwarven tunnel digger creates another promising tunnel.
Dwarf gold digger goes home.
Dwarf gold digger goes to sleep.
Dwarf cart operator goes home.
Dwarf cart operator goes to sleep.
Dwarven tunnel digger goes home.
Dwarven tunnel digger goes to sleep.


*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值