创建型模式

来源:互联网 发布:新世纪期货软件 编辑:程序博客网 时间:2024/06/16 01:34
         创建型模式就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。它隐藏了这些类的实例是如何被创建和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创建型模式在创建了什么、谁创建它、它是怎么被创建的,以及何时创建这些方面提供了很大的灵活性。

建造者模式(好菜每回味不同):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。将一个产品的内部表象与产品的生成过程分割开来。构造和组装分离。高内聚,松耦合。过程是稳定的,而具体建造的细节是不同的。
遵从依赖倒转原则即抽象不应该依赖于细节,细节应该依赖与抽象。流程是抽象的。
如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 指挥者用来控制建造过程,使得用户与建造过程的关联隔离。
先定义一个抽象类,把过程给稳定住,这样就不会遗忘当中的任何一步。
优点:封装性好,易扩展,便于控制细节
builder是一个建造小人各个部分的抽象类,ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。Director是指挥者,用于创建一些复杂的对象,这些对象内部构建间的顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。在这里指挥者的作用是建造小人的头手足的步骤。




原型模式(简历复印):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。依赖倒转。
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。
一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,又对性能是大大的提高,不用重新初始化对象,而是动态地获得对象运行时的状态。
建立相应数目的原型并克隆它们通常比每次用合适的状态手工实例化该类更方便一些。
浅复制:对象的简单克隆体,对应对象内部的引用对象,只是克隆地址
深复制:对象的深度克隆体,完全一模一样的对象,引用对象指向不同的内存地址
浅复制只复制类本身,深复制复制类本身和类引用的类
要想对引用类型实现深复制,就要对被引用的类要实现ICloneable接口,引用类的那个类进行重写clone方法
对于引用类型来说浅复制

深复制

浅复制实现

深复制实现



单例模式(类也需要计划生育):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
也就是说让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。
将类的构造方法写成是private的,那么外部就不能用new来实例化了,实例化与否则由自己判断。
在public方法中写一个GetInstance方法,目的是返回一个类实例,判断是否实例化,若没有则调用private的构造方法new出这个实例。
双重锁定是在实例未被创建时加锁处理,lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待,直到该对象被释放。这也就是懒汉式单例类即要在第一次被引用时,才会将自己实例化,会面临多线程访问的安全问题,需要双重锁定。
饿汉式单例类是一种静态初始化方法,在自己被加载时就将自己实例化,不需要显式地编写线程安全代码,即可解决多线程环境下它是不安全的问题。
工厂方法和抽象工厂上篇已经写了,这里就不再赘述http://blog.csdn.net/mxljiayou/article/details/39136909
目前对于创建型模式就理解到这里了,通过以后的学习再更加深入的理解。
0 0
原创粉丝点击