
JAVA设计模式
select you from me
万年太久,只争朝夕
展开
-
设计模式详解之————观察者模式(二)
引言从我的上篇博客中,我们可以针对气象预报的例子思考两个问题:(1)观察者种类这么多,每个观察者关心的数据不同,但是被强制通知了一堆数据,这种设计是不是冗余了?(2)如果哪一天观察者需要拓展功能,需要增加更多的状态,岂不是需要修改和更新每个观察者的调用?这个问题的解决方案也简单,我们暂且不论,先来看看JAVA内置的观察者模式是怎么实现的。Java内置的观察者模式...原创 2019-07-13 16:45:26 · 412 阅读 · 0 评论 -
设计模式详解之————观察者模式(一)
定义观察者模式定义了对象之间一对多的依赖,当一个对象改变状态,其他依赖者都会受到通知。出版者+订阅者=观察者模式(《HEAD FIRST 设计模式》)。注:发布订阅模式有异于观察者模式,是因为发布订阅会有一个消息中间件参与,具体不再赘述。更多的认为发布订阅模式是观察者模式的演变。代码实现设计原则将程序中的变化的方面和固定不变的方面分离在观察者模式中,会改变的是主题的状态,以及观察...原创 2019-07-12 14:27:43 · 734 阅读 · 0 评论 -
设计模式详解之————装饰者模式
定义装饰者模式动态的将责任附加到对象上,若要拓展功能,装饰者提供了比继承更有弹性的替代方案。原创 2019-07-23 15:30:13 · 413 阅读 · 0 评论 -
设计模式详解之————工厂模式(一)
引言假设我们有一个披萨店,我们设计的类可能是下边这个样子的:原创 2019-08-14 10:19:22 · 819 阅读 · 0 评论 -
设计模式详解之————单例模式(一)
概念许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如某个服务的配置信息,某个系统的打印机。单例模式与静态变量思路很像,其目的是建立一个全局唯一的对象。那么我们为什么不用static去修饰我们需要的对象呢?为什么引入单例模式?原因有两个(1)static不易拓展(2)单例模式可以实现在需要的时候创建对象,而static只能在运行时创建。实现思路那么我们怎么实...原创 2019-08-14 14:25:37 · 1552 阅读 · 0 评论 -
设计模式详解之————单例模式(二)
引言上一篇我们说到单例模式的实现,下面我们来看下有没有什么方式更够更高效的实现单例模式呢?毕竟单例模式的对象可能处处都需要使用。代码实现一般情况下,JVM对每个类一般只会加载一次(使用多个类装载器来加载类除外)。(1)私有静态内部类持有实例这是一种懒汉模式的设计,但是通过私有静态内部类持有实例的方式避免了线程安全的问题。并发环境时也不需要排队,内存只在需要的时候才会分配。这里主要注意内...原创 2019-08-14 16:42:08 · 1633 阅读 · 0 评论