摘录于《java与模式》,觉得写得挺好的,就摘录了下
单例模式
单例模式使用了简单工厂模式。单例类具有一个静态工厂方法提供自身的实例。
一个抽象产品类同时是子类的工厂。但是单例模式并不是简单工厂模式的退化情形,单例模式要求单例类的
构造子是私有的,从而客户端不能直接将之实例化,而必须通过这个静态工厂方法将之实例化,而且单例类自身
是自己的工厂角色。换言之,单例类自己负责创建自身的实例。
单例类使用一个静态的属性存储自己的唯一实例,工厂方法永远仅提供这一个实例。
多例模式
多例模式是对单例模式的推广,多例模式与单例模式的共同之处在于它们都禁止外界直接将之实例化,
同时通过静态工厂方法向外界提供循环使用的自身的实例。它们的不同在于单例模式仅有一个实例,而多例模式则可以有多个实例。
多例模式往往具有一个聚集属性,通过向这个聚集属性登记已经创建过的实例达到循环使用的实例的目的。
一般而言,一个典型的多例类具有某种内部状态,这个内部状态可以用来区分各个实例,而对应于每一个内部状态,都有一个实例存在。
根据外界传入的参量,工厂方法可以查询自己登记聚集,如果具有这个状态的实例已经存在,就直接将这个实例提供给外界;反之,就首先创建一个新的
满足要求的实例,将之登记到聚集中,然后提供给你客户端。
单例模式和多例模式使用一个属性或者聚集属性来登记创建的产品对象,以便可以通过查询这个属性或者聚集属性
找到并共享已经创建的产品对象,这就是备忘录模式应用。
MVC模式
MVC模式并不是严格意义上的设计模式,而是在更高层次上的架构模式。MVC模式可以分解成为几个设计模式的
组合,包括合成模式、策略模式、观察者模式,也有可能会包括装饰模式、调停着模式、迭代子模式以及工厂方法
模式。简单的工厂模式所创建的对象往往属于一个产品等级结构,这个等级结构可以是MVC模式中的视图(view),
而工厂角色本身是控制器(controller).