1. 程式人生 > >代理模式在Android中的應用

代理模式在Android中的應用

package com.dqqdo.testclass;

/**
 * Created by qingquan on 2017/6/29.
 */
public class ProxyMain {

    public static void main(String args[]){

        King king = new King("嘉靖皇帝");

        System.out.println("--" + king.getName() + "- 要管理國家事務了。 ----");

        Official yansong = new Official("嚴嵩",false);
        Official xujie = new Official("徐階",true);

        System.out.println("-----" + king.getName() + " 選擇嚴嵩作為他的首輔。 ----");
        king.setPremier(yansong);

        if(king.isWorkDone()){
            System.out.println("國家治理的很好,皇帝很開心");
        }else{
            System.out.println("國家治理的不好,皇帝很生氣");
        }

        System.out.println("-----" + king.getName() + " 選擇徐階作為他的首輔。 ----");
        king.setPremier(xujie);

        if(king.isWorkDone()){
            System.out.println("國家治理的很好,皇帝很開心");
        }else{
            System.out.println("國家治理的不好,皇帝很生氣");
        }

    }

    /**
     * 首輔介面
     */
    interface Premier{

        boolean doWork();


    }

    /**
     * 官員類 實現首輔介面
     */
    static class Official implements Premier{

        private String name;
        private boolean isGoodGuy;

        public Official(String name,boolean isGoodGuy){
            this.name = name;
            this.isGoodGuy = isGoodGuy;
        }

        @Override
        public boolean doWork() {
            System.out.println(name + "在做具體的工作");
            return isGoodGuy;
        }

    }


    /**
     * 皇帝類
     */
    static class King{

        private Premier premier;
        private String name;


        public King(String name) {
            this.name = name;

        }

        public Premier getPremier() {
            return premier;
        }

        public void setPremier(Premier premier) {
            this.premier = premier;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public boolean isWorkDone(){

           return premier.doWork();

        }



    }


}