黑马程序员_设计模式
来源:互联网 发布:攻击阿里云服务器方法 编辑:程序博客网 时间:2024/04/29 15:17
装饰设计模式
当想对已有的对象进行功能增强时。
可以定义类,将已有对象传入,基于已有的功能,并提供加强功能
那么自定义的该类称为修饰类
装饰模式比继承模式灵活,避免了继承体系臃肿
而且装饰类还降低了类与类之间的关系
装饰类因为是增强已有对象,具备的功能和已有的功能是相同的
所以装饰类和被装饰类通常都是属于同一个体系中。
装饰类通常会使用构造方法接受被装饰对象
并基于被装饰对象的功能,提供更强大的功能
class Person//原类,需要增强类
{
public void fun1() {}
}
class SuperPerson//将原类作为构造参数传入的增强类,该类一般会添加更多功能
{
private Person person;
SuperPerson(Person person)
{
this.person = person;
}
public void fun2()
{
p.fun1();
System.out.println();//比如添加个打印。。
}//添加新功能
}
class PersonDemo
{
public static void main(String [] args)
{
Person p = new Person();//原类
SuperPerson s = new SuperPerson(p);//当作参数传入构造成增强类操作
s.fun2(){}//调用fun()2时,也会有p.fun1()的功能调用
}
}
单例模式
//饿汉式
class Single{
private final static Single s = new Single();
Single(){}
public static Single getInstacne(){
return s;
}
}
//懒汉式
class Single2{
private static Single2 single = null;
private Single2(){}
public static Single2 getInstance(){
if(single == null){
synchronized(Single2.class){
if(single == null){
single = new Single2();
}
}
}
return single;
}
}
public class DanLiSynchronized {
}
class Single{
private final static Single s = new Single();
Single(){}
public static Single getInstacne(){
return s;
}
}
//懒汉式
class Single2{
private static Single2 single = null;
private Single2(){}
public static Single2 getInstance(){
if(single == null){
synchronized(Single2.class){
if(single == null){
single = new Single2();
}
}
}
return single;
}
}
public class DanLiSynchronized {
}
享元模式
在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。
比如word中的字母符号,每个符号都是一个对象,不同出现的地方就是不同的坐标定位。
以共享的对象,也就是说返回的同一类型的对象其实是同一实例,当客户端要求生成一个对象时,工厂会检测是否存在此对象的实例,如果存在那么直接返回此对象实例,如果不存在就创建一个并保存起来,这点有些单例模式的意思。通常工厂类会有一个集合类型的成员变量来用以保存对象,如hashtable,vector等。在java中,数据库连接池,线程池等即是用享元模式的应用。——tzj163
0 0
- 黑马程序员_设计模式
- 黑马程序员_设计模式
- 黑马程序员_设计模式
- 黑马程序员_设计模式
- 黑马程序员_设计模式
- 黑马程序员_设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_装饰设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_装饰设计模式
- 黑马程序员_设计模式总结
- 黑马程序员_java入门_设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- accept函数
- DXP 快捷键
- Java虚拟机调优原理及技巧
- Alice实现自定义标签
- ssh无密码密钥方式登录
- 黑马程序员_设计模式
- 二叉平衡树
- 如何高效工作之反思
- 次优查找树
- HDU 2992 Hotel booking(spfa+floyd)
- CenOS下MySQL数据库的安装
- 避免僵尸进程的三种方法
- 【小战三级网络技术】
- 关于聚集索引和非聚集索引