不雅察者设计模式
不雅察者设计模式重要的应用处景在于一个对象变更之后,依附该对象的对象会收到通知。典范的例子就是rss的订阅,当订阅了博客的rss之后,当博客更新之后,订阅┞愤就会收到新的订阅信息。
jdk内置供给了Observable和Observer,用来实现不雅察者模式:
- // 定义一个Observable
- public class MetricsObserable extends Observable {
- private Map counterMap = new HashMap<>();
- public void updateCounter(String key, Long value) {
- counterMap.put(key, value);
- setChanged();
- notifyObservers(counterMap);
- }
- }
- // Observer
- public class AdminA implements Observer {
- @Override
- public void update(Observable o, Object arg) {
- System.out.println("adminA: " + arg);
- }
- }
- public class AdminB implements Observer {
- @Override
- public void update(Observable o, Object arg) {
- System.out.println("adminB: " + arg);
- }
- }
测试:
- MetricsObserable metricsObserable = new MetricsObserable();
- metricsObserable.addObserver(new AdminA());
- metricsObserable.addObserver(new AdminB());
- metricsObserable.updateCounter("request-count", 100l);
打印出:
- adminB: {request-count=100}
- adminA: {request-count=100}
线程池中会构造几个核心线程用于处理,这些线程会去取壅塞队列里的义务然落后行履行。这些线程就是会被共享、且被反复应用的。因为线程的创建、烧毁、调剂都是须要消费资本的,没有需液每次创建新的线程,而是共用一些线程。这就是享元模式的应用。类似的还有jdbc连接池,对象池等。
外不雅模式用来包装一组接口用于便利应用。 比如体系平分10个模块,有个功能须要组合应用所有的模块,这个时刻就须要一个包装类包装这10个接口,然落后行营业逻辑的调用。
之前有一次面试被问到:
- Integer.valueOf("1") == Integer
推荐阅读
自负年夜 Google 的人工智能 AlphaGO 成为围棋界的百胜将近开端,AI(Artificial Intelligence,人工智能)这两个英文字,刹那间成为科技业最热点的关键字之一。而就在2017岁首?年代,早在>>>详细阅读
本文标题:记录自己理解的一些设计模式
地址:http://www.17bianji.com/lsqh/34663.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示