package backgulf.patterns; public abstract class AbstractLogger { public static int INFO = 1; public static int DEBUG = 2; public static int ERROR = 3; protected int level; private AbstractLogger nextLogger; public void setNextLogger(AbstractLogger l
想象一棵树,子节点中某些属性依赖于父节点某个属性。 当父节点中这个属性改变时想让这些子节点随之改变,该怎么设计代码结构呢? 父节点 Subject 子节点 Observer(1,2,3) 我的第一想法是 创造一个第三方,初始化subject 后 创建 第三方关系类,再初始化observer1,2,3 并依次在关系类中维护他们的关系。 subject有更新时,再调用关系类中 对observer对象们的更新。 但是,不仅引入了一个第三方模块,而且初始化一个subject时还得多初始化一个关系类。 观察者模式: subject中 创造一个观察者列表的属性,并且
单例模式Singleton 1.定义 保证一个类只有一个实例,并提供一个访问它(这个实例)的全局访问点。本质是控制实例数目。 1.1功能 保证这个类在运行期间只会被创建一个实例。 1.2单例的范围 如果一个虚拟机里有多个ClassLoader,且每个ClassLoader都装载一次Singleton,那么就可能会创建多个实例。如果有多个虚拟机且每个虚拟机都装载一次Singleton那么肯定就会创建多个实例了。 2.思路 通过一个类能够创建多个实例,根源在于它的构造方法是公开的,只要它的构造方法公开,类外就可以通过它构造多个实例。所以如果要控制实例的创建,