设计模式总结(单例设计、装饰设计模式)


设计模式:把软件行业中出现的问题进行抽取并解决。总共有23种。对问题行之有效的解决方式,其实它是一种思想。

 

 单例设计模式:

 解决的问题:可以保证一个类在内存中的对象唯一性。

 

 比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。

 

 如何保证对象唯一性呢?

 1.不允许其他程序用new创建该类对象。

 2.在该类中创建一个本类实例。

 3.对外提供方法,让其他程序可以获取该对象。

 

 步骤:

 1.构造函数私有化

 2.通过new在本类中创建本类的对象。

 3.定义一个共有的方法将创建的对象返回。


饿汉式

class Single{// 类一加载对象就建立。
	private static Single s = new Single();
	private Single(){}
	public static Single getInstance(){//使用方法可控。
		return s;
	}
}


懒汉式

class Single_2{//类加载没有对象,只有调用了getInstance方法时才会创建对象。
//单例设计模式的延迟加载形式。
	private static Single_2 s = null;
	private Single_2(){}
	public static Single_2 getInstance(){
		if(s == null)
		s = new Single_2();
		return s;
	}
}
public class SingleDemo {
	public static void main(String[] args) {
		Single ss = Single.getInstance();
		Single ss1 = Single.getInstance();
		System.out.println(ss==ss1);
		//Single ss = Single.s;
	}
}
 

------------------------------------------------------------

装饰设计模式:对一组对象的功能进行增强时,就可以使用该模式进行问题的解决。

可以通过一个简单的小例子来理解装饰设计模式。

例:

public class Demo9 {
	public static void main(String[] args) {
		Person p = new Person();
		//p.chifan();
		NewPerson p1 = new NewPerson(p);
		p1.chifan();
	}
}
class Person{
	void chifan(){
		System.out.println("吃饭");
	}
}
//这个类的出现是为了增强Person而出现。
class NewPerson{
	private Person p;
	NewPerson(Person p){
		this.p = p;
	}
	void chifan(){
		System.out.println("开胃酒");
		p.chifan();
		System.out.println("甜点");
	}
}


装饰设计模式和继承都可以实现功能的扩展增强。

装饰设计模式和继承的区别。

为了提高效率而产生子类对象,只为了提高功能而进行继承,会导致继承体系越来越臃肿不够灵活。

而将技术进行单独的封装,那个对象需要这个功能,那个对象就和这个功能关联。

装饰比继承更为灵活。

特点:装饰类和被装饰类都必须所属于同一个接口或者父类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值