美文网首页
观察者模式

观察者模式

作者: OakesYa | 来源:发表于2020-05-29 15:50 被阅读0次

    背景

    在许多公共工具中我们可能听说过一个函数叫回调函数,回调函数就是被传入然后再调用的函数,观察者模式传入一个观察者,然后有变化的时候会再调用一下观察者执行任务,那我们就来写一个消费者观察厂商是否出新品,厂商有新品的时候消费者就会购买的代码实例

    代码实例

    //定义一个消费者接口
    public interface Consumer {
        /**
         * 购买行为
         */
        void buy();
    }
    
    //定义厂家
    public class Producter {
        private List<Consumer> consumerList = new ArrayList<>();
        //增加消费者作为观察者
        public void addConsumer(Consumer consumer) {
            consumerList.add(consumer);
        }
        
        public void startSelling() {
            for (Consumer consumer : consumerList) {
                consumer.buy();
            }
        }
    }
    
    //定义一个普通消费者
    public class NormalConsumer implements Consumer {
        @Override
        public void buy() {
            System.out.println("普通消费者买一个!");
        }
    }
    
    //定义一个特殊消费者
    public class SpecialConsumer implements Consumer {
        @Override
        public void buy() {
            System.out.println("特殊消费者买好多个!");
        }
    }
    

    上面就会发现当厂家自己开始售卖的时候,作为观察者的消费者就会开始执行购买操作。我们开下执行结果

    public class ConsumerTest {
        public static void main(String[] args) {
            Producter producter = new Producter();
            //添加两个观察者
            producter.addConsumer(new NormalConsumer());
            producter.addConsumer(new SpecialConsumer());
    
            producter.startSelling();
        }
    }
    

    执行结果如图所示



    上面就是一个完整的观察者模式案例。本质就是回调函数的使用。

    相关文章

      网友评论

          本文标题:观察者模式

          本文链接:https://www.haomeiwen.com/subject/ohzoahtx.html