1、Factory 设计模式: the most common pattern,create a new object ,eg. A a=new A();工厂模式的好处:工厂模式能够作到把建立对象单独提出来,起到解耦做用,即:若是要修改建立对象的逻辑不用在项目里的各处修改了,只须要在工厂里面修改一处就能够了,大大缩短了修改的工做量.java
此模式属于建立型设计模式,它只定义建立对象的接口,而由它的子类负责建立具体的对象,利用子类实例化不一样的对象。图一是Factory Method 模式结构的类图(Class Diagram),其中:数据库
也就是说Creator依赖于ConcreteCreator建立Product型的ConcreteProduct对象。 Factory method使应用程序代码只需处理Product接口,而与具体的类(ConcreteProduct)无关,加强了代码可重用性,由于它独立于用户定义的具体的类。设计模式
小结 工厂模式的适用范围
• 在编码时不能预见须要建立哪种类的实例。
• 一个类使用它的子类来建立对象。
• 开发人员不但愿建立了哪一个类的实例以及如何建立实例的信息暴露给外部程序。安全
2、Singleton 单例模式: let one class only has one instance, something like static parameter, can save memory,
beneficial to garbage collection Singleton 是一种建立性模型,它用来确保只产生一个实例,并提供一个访问它的全局访问点.对一些类来讲,保证只有一个实例是很重要的,好比有的时候,数据库链接或 Socket 链接要受到必定的限制,必须保持同一时间只能有一个链接的存在.再举个例子,集合中的 set 中不能包含重复的元素,添加到set里的对象必须是惟一的,若是重复的值添加到 set,它只接受一个实例.JDK中正式运用了Singleton模式来实现 set 的这一特性,你们能够查看java.util.Collections里的内部静态类SingletonSet的原代码.其实Singleton是最简单但也是应用最普遍的模式之一,在 JDK 中随处可见.多线程
为了实现 Singleton 模式,咱们须要的是一个静态的变量,可以在不建立对象的状况下记忆是否已经产生过实例了.静态变量或静态方法均可以在不产生具体实例的状况下直接调用,这样的变量或方法不会由于类的实例化而有所改变.在图1的结构中能够看到,uniqueInstance 就是这个独立的静态变量,它能够记忆对象是否已经实例化了,在静态方法 Instance 中对这个变量进行判断,若没有实例化过就产生一个新的对象,若是已经实例化了则再也不产生新的对象,仍然返回之前产生的实例.编码
小结spa
3、Prototype 原型模式:the same as clone()线程
一、定义:原型模式就是经过一个原型对象来代表要建立的对象类型,而后用复制这个对象的方法来建立更痛类型的对象。设计
二、原理:有两部分组成,抽象原型和具体原型。代理
三、使用时机:系统须要 建立吃的对象是动态加载的,并且产品具备必定层次时,能够考虑使用原型模式。
>当要实例化的类是在运行时刻指定时,例如,经过动态装载;
>或者为了不建立一个与产品类层次平行的工厂类层次时;
>或者当一个类的实例只能有几个不一样状态组合中的一种时。
>创建相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
四、效果:
>能够再运行时刻增长和删除产品。
>能够经过改变值来指定产品。
>能够经过改变结构来指定新对象。
>减小子类的构造
>能够用类动态配置应用。
五、实现:
>使用一个原型管理器
>实现克隆操做(浅拷贝和深拷贝)
>初始化克隆对象。
六、使用原型模式的意图:用原型实例指定建立对象的种类,而且经过拷贝这些原型建立新的对象。
七、解决的问题:
好比有一个对象,在某一时刻该对象中已经包含了一些有效的值,此时可能会须要一个和该对象彻底相同的新对象,而且此后对新对象的任何改动都不会影响到原来对象中的值,也就是说新对象与原来的对象是两个独立的对象,但新对象的初始值是由原来的对象肯定的。
Clone:
赋值建立对象:
>java中赋值建立对象是能够实现对象的重用的,可是新对象和原对象是同一个引用;若是修改其中的一个对象的值,则另外的一个对象也会发生改变。
>使用clone方法会返回对象的一个拷贝,这样一来,若是修改一个对象的值,则另外的对象不会发生改变的。
4、Proxy 代理模式:一个类表明另外一个类的功能。这种类型的设计模式属于结构型模式。
在代理模式中,咱们建立具备现有对象的对象,以便向外界提供功能接口。
3:真实代理对象.定义了代理角色所表明的具体对象.
还有就是受权机制,经过代理能拦截真实主题的能力,来控制真实主题的访问权限.