android 访问者模式

    private void t() {
        juzi juzi = new juzi();
        langtou langtou = new langtou();
        gongju gongju = new gongju();
        gongju.add(juzi);
        gongju.add(langtou);

        oneP jason = new oneP("jason");
        twoP jace = new twoP("jace");
        gongju.js(jace);
        gongju.js(jason);
    }

    abstract class tool{
        protected String name;

        public tool(String name) {
            this.name = name;
        }

        public abstract void accept(person person);
        public abstract void use();
    }

    abstract class person{
        String name;

        public person(String name) {
            this.name = name;
        }

        public abstract void useTool(tool tool);
    }

    class langtou extends tool{

        public langtou() {
            super("榔头");
        }

        @Override
        public void accept(person person) {
            person.useTool(this);
        }

        @Override
        public void use() {
            Log.i(TAG, "use: "+name);
        }
    }

    class juzi extends tool{

        public juzi() {
            super("桔子");
        }

        @Override
        public void accept(person person) {
            person.useTool(this);
        }

        @Override
        public void use() {
            Log.i(TAG, "use: "+name);
        }
    }

    class oneP extends person {

        public oneP(String name) {
            super(name);
        }

        @Override
        public void useTool(tool tool) {
            Log.i(TAG, "useTool: name:"+name);
            tool.use();
        }
    }

    class twoP extends person {

        public twoP(String name) {
            super(name);
        }

        @Override
        public void useTool(tool tool) {
            Log.i(TAG, "useTool: name:"+name);
            tool.use();
        }
    }

    class gongju {
        List<tool> tools=new ArrayList<>();
        public void add(tool tool){
            tools.add(tool);
        }
        public void js(person person){
            Iterator<tool> iterator = tools.iterator();
            while (iterator.hasNext()){
                tool next = iterator.next();
                next.accept(person);
            }
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值