装饰和单例设计模式
来源:互联网 发布:幸运叶子 知乎 编辑:程序博客网 时间:2024/06/05 23:41
黑马程序员
装饰和单例设计模式
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
一、装饰设计模式
当想对已有的对象进行功能增强时,可以自定义类,将已有对象传入,基于已有的功能,并提供加强功能,那么自定义的类成为装饰类。装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。
继承与装饰的区别
当一个抽象类有很多的子类,需要为每个子类都增强一些功能时,如果为每一个子类都定义一个子类,会使继承体系变的相当复杂,而且不利于扩展,而如果是用装饰类的话,可以单独定义一个功能增强装饰类,将需要增强功能的子类传递进来就可以了,简化了继承体系, 装饰类比继承更灵活,降低了类与类之间的关系, 装饰类通常与被装饰类属于一个体系。
自定义一个字符缓冲流:
1. class MyBufferedReader extends Reader
2. {
3. Reader r;
4. public MyBufferedReader(Reader r)
5. {
6. this.r=r;
7. }
8. public String MyreadLine() throws IOException
9. {
10. StringBuilder s = new StringBuilder();
11. int c;
12. while((c=r.read())!=-1)
13. {
14. if(c=='\r')
15. continue;
16. if(c=='\n')
17. return s.toString();
18. s.append((char)c);
19. }
20. if(s.length()!=0)
21. return s.toString();
22. return null;
23. }
24. public void myclose() throws IOException
25. {
26. r.close();
27. }
28. @Override
29. public void close() throws IOException {
30. r.close();
31. }
32. @Override
33. public int read(char[] arg0, int arg1, int arg2) throws IOException {
34. return r.read(arg0, arg1, arg2);
35. }
二、单例设计模式
单例设计模式:解决一个类在内存只存在一个对象。就是保证对象的唯一性
1:饿汉式。
Single类一进内存,就已经创建好了对象。
class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
2:懒汉式。
对象是方法被调用时,才初始化,也叫做对象的延时加载。Single类进内存,对像还有没有存在,只有调用了getInstance方法时,才建立对象。注意:懒汉式线程不安全,需要通过同步解决,但同步的效率低,所以使用双重判断提高效率。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = new Single();
}
}
return s;
}
}
class MyBufferedReader extends Reader
{
Reader r;
public MyBufferedReader(Reader r)
{
this.r=r;
}
public String MyreadLine() throwsIOException
{
StringBuilder s = newStringBuilder();
int c;
while((c=r.read())!=-1)
{
if(c=='\r')
continue;
if(c=='\n')
return s.toString();
s.append((char)c);
}
if(s.length()!=0)
return s.toString();
return null;
}
public void myclose() throwsIOException
{
r.close();
}
@Override
public void close() throwsIOException {
r.close();
}
@Override
public int read(char[] arg0, intarg1, int arg2) throws IOException {
return r.read(arg0, arg1, arg2);
}
}
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
- 装饰和单例设计模式
- 黑马程序员------装饰设计模式和单例设计模式
- 黑马程序员_单例设计模式和装饰类设计模式
- 设计模式【工厂模式】【单例模式】【装饰者模式】
- 设计模式--装饰模式And单例模式
- 设计模式(单例、装饰、享元、模板)
- 黑马程序员——单例设计模式、装饰设计模式以及享元设计模式
- 设计模式——单例模式、工厂模式、代理模式、观察者模式、装饰器模式
- iOS设计模式(MVC和单例模式,门面和装饰器模式,适配器和观察者模式以及备忘录和命令模式)
- iOS设计模式(MVC和单例模式,门面和装饰器模式,适配器和观察者模式以及备忘录和命令模式)
- 黑马程序员 设计模式总结(单例设计、装饰设计模式)
- 黑马程序员-Java学习笔记之设计模式(单例设计模式,装饰设计模式,模板设计模式)
- 论Python的单例模式和装饰器
- 设计模式-代理模式和装饰模式
- 设计模式和原则:单例模式
- 【黑马程序员】单例设计模式与装饰设计模(十二)
- java设计模式(1)-------单例,工厂,值对象,装饰模式
- JAVA 模板设计模式和单例设计模式
- Cocos2d-x项目从VS移植到Xcode中的配置
- ExtJs4 笔记(7) Ext.tip.ToolTip 提示
- 苹果推送通知办事教程 Apple Push&nb
- 类的继承
- 遍历整个轮廓
- 装饰和单例设计模式
- 比赛 I - 0 or 1
- ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件
- 硕士论文查重原理与快速通过的七大方法
- PAT 1063
- 博客始
- 连接脚本
- 蓝桥杯------大臣的旅费------Floyd算法求解
- 继续add oil...