`
bierbobo
  • 浏览: 20461 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

创建型设计模式

 
阅读更多

创建型模式

 

 

工厂:工厂方法---子类决定实例化那个类,抽象工厂---创建相关对象无需指定具体类。
原型:拷贝对象来创建新的对象
单例:确保一个类只有一个实例,自行实例化对外提供
建造者:对象的创建与表示想分离,同样的创建可以创建不同的表示

 

 

一、工厂方法与抽象工厂

 

一、定义:
工厂方法模式是用来创建一个产品的等级结构的,抽象工厂模式是用来创建多个产品的等级结构的

 

二、目的
1)重点在于"怎么创建",围绕着一种产品的构造,初始化这些细节上面,产品之间有很多可以复用的特征,所以会和模版方法相随,
工厂方法模式通常和模板方法模式一起结合使用。

2)重点在于"创建哪些"产品上,划分不同差异的产品线,并且尽量保持每条产品线接口一致,从而可以从同一个抽象工厂继承。

 

三、区别:

工厂方法创建一般只有一个方法,创建一种产品。
抽象工厂一般有多个方法,创建一系列产品。

工厂方法模式是采用inheritence,而抽象工厂模式是采用composition

抽象工厂模式与工厂方法模式的最大区别在于,
1、工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构
2、区分产品族和等级结构。

分享到:
评论
3 楼 bierbobo 2012-05-14  
原型
1、继承Cloneable接口
2、clone方法不会调用构造方法,是在内存中进行二进制的拷贝

浅拷贝:引用指向原生对象的内存地址。
深拷贝:需要将数组和对象的值重新拷贝。

用final修饰的类对象成员就只能进行浅拷贝,因为类对象成员引用不可变。
2 楼 bierbobo 2012-05-14  
/**
* 饿汉式单例
*
*/
public class Singleton {

private static final Singleton instance=new Singleton();

private Singleton(){
}

public static Singleton getInstance(){
return instance;
}

}
1 楼 bierbobo 2012-05-14  
/**
* 懒汉式单例
*/
class Singleton1 {

private static Singleton1 instance;

private Singleton1(){
}

public synchronized static Singleton1 getInstance(){

if(instance==null){
instance=new Singleton1();
}
return instance;
}

}


/**
* 懒汉式单例
*/
class Singleton2{

private static Singleton2 instance;
private static Object lock=new Object();

private Singleton2(){
}

public static Singleton2 getInstance(){
if(instance==null){
synchronized (lock) {
if(instance==null){
instance=new Singleton2();
}
}
}
return instance;
}
}

/**
* 懒汉式单例
*/
class Singleton3{

private Singleton3(){
}

public static Singleton3 getInstance(){
return SingletonHolder.INSTANCE;
}

    private static class SingletonHolder
    {
        static final Singleton3 INSTANCE = new Singleton3();
    }


}

相关推荐

Global site tag (gtag.js) - Google Analytics