------- 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培训 、期待与您交流! ----------