设计模式

------- android培训java培训、期待与您交流! ----------

-单例设计模式:
解决一个类在内存只存在一个对象。
想要保证对象唯一
1,避免其他程序过多建立对象,就禁止其他程序建立对象。
2,在本类中自定义一个对象,让其他程序可以访问到该类对象。
3,对外提供访问方式,方便其他程序对自定义对象的访问。
实现过程
1,构造函数私有化,禁止建立
2,建立对象,
3,提供方法,方便使用


需要保证唯一时,加上以上3步。其他一样。


懒汉式:方法被调用,才初始化,也叫对象的延时加载。
懒汉式容易出现安全隐患,需要加锁。建议使用饿汉式。

饿汉式:一进内存,已经初始化,建立好了对象。


class Single
{
	//饿汉式:一进内存,已经初始化,建立好了对象。
	//构造函数私有化,不能外部建立对象
	private Single(){}
	//自己建立对象,不能建立对象,只能类名调用,定义成静态
	private static Single s = new Single();
	//提供静态方法
	public static Silgle getInstance()
	{
		return s;
	}
}
{
	//懒汉式:方法被调用,才初始化,也叫对象的延时加载。
	//建立时值为空,被调用时才加载	
	private static Single s = null;
	private Single(){}
	public static Silgle getInstance()
	{	
		if(s==null)
		{
			//由于可能出现安全隐患,加锁进行双重判断
			synchronized(Single.class)//静态锁是该类所属的字节码文件对象。
			{
				if(s==null)
					s = new Single();
			}
		}
		return s;
	}
}

-模板方法模式


就是定义功能时,功能一部分是确定的,一部分是不确定的,确定的在调用不确定的功能,就把不确定的部分暴露出来,由子类实现。

abstract class GetTime
{
	public final void getTime()
	{
		long start = System.currentTimeMillis();
		//需要调用又不确定的功能
		runcode();
		long end = System.currentTimeMillis();

		System.out.println("时间"+(end-start));
	}
	//不确定功能,由子类实现
	public abstract void rucode();
}
-装饰设计模式


当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。自定义的该类称为装饰类。
装饰类通常会通过构造方法接收被装饰的对象,基于被装饰的对象的功能,提供更强的功能。


装饰模式比继承灵活。避免了继承体系臃肿。降低了类与类之间的关系。


装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。因此装饰类和被装饰类通常都属于一个体系中的。

import java.io.*;

class MyBufferedReader
{
	//设置私有参数Reader
	private Reader r;
	//MyBufferedReader(){}
	//设置构造参数
	MyBufferedReader(FileReader r)
	{
		this.r = r;
	}
	//设置myReadLine
	public String myReadLine()throws IOException
	{
		//设置数据存储容器,偷懒不用字符数组,直接用字符串容器
		StringBuilder sb= new StringBuilder();
		//读取字符并存入容器,直到换行
		int ch = 0;

		while((ch=r.read())!=-1)
		{
			//
			if(ch=='\r')
				continue;
			if(ch=='\n')
				return sb.toString();
			else
				sb.append((char)ch);
		}
		//没有数据时返回null;
		if(sb.length()!=0)
			return sb.toString();
		return null;

	}
	//覆盖抽象方法
	public void close()throws IOException
	{
		r.close();
	}	
	public int read(char[] cbuf, int off,int len) throws IOException			
	{
		return r.read(cbuf, off,len);
	}

}

-享元模式flyweight


就是把常用小的对象有相同属性封装成一个对象,相同属性为内部对象,不同属性做为外部状态,外部状态做为方法参数来使用。

-------  android培训 java培训 、期待与您交流! ----------




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值