创建型模式——单例模式和原型模式

单例模式(singleton):

定义:

保证一个类只有一个实例,仅提供一个访问他实例的全局访问点。

适用性:

1.当类只有一个实例,而且客户只能从一个众所周知的访问点访问它时;

2.当这个唯一实例,应该是可以通过子类化进行扩展的,并且客户应该无需更改代码就可以使用一个扩展实例!

singleton:

package pattern.creational.singleton;

public class Singleton {
	private static Singleton instance = null;
	private Singleton(){
	}
	public static Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}

}

Test:

package pattern.creational.singleton;

public class Main {
	public static void main(String[] args){
		Singleton single1 = Singleton.getInstance();
		Singleton single2 = Singleton.getInstance();
		System.out.println(single1 == single2);
	}

}

result = true;

原型模式(protoType):

定义:

用原型实例创建对象的种类,并且通过拷贝这些原型创建新的对象!

解决的问题:

它主要面对的问题:某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口!

ProtoType:

package pattern.creational.protoType;

public class ProtoType implements Cloneable{
	private String name;

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
	public Object clone(){
		try {
			return super.clone();
			
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		
	}

}

Test:

package pattern.creational.protoType;

public class Main {
	public static void main(String[] args){
		ProtoType pty = new ProtoType();
		ProtoType pty2 = (ProtoType) pty.clone();
		System.out.println(pty);
		System.out.println(pty2);
	}

}

result:

pattern.creational.protoType.ProtoType@1bc4459
pattern.creational.protoType.ProtoType@12b6651


你可能感兴趣的:(工作之前的随笔)