Java设计模式设计模式-装饰者模式装饰者模式
Java设计模式设计模式-装饰者模式装饰者模式
装饰者模式是什么装饰者模式是什么
装饰者模式是23中设计模式的一种。
从这个模式的名字“装饰者”可以看出,这个设计模式是基于已有的类进行设计的一种模式。
装饰者模式他是为了让已经存在的类的功能更多,更全面。
装饰者模式怎么用装饰者模式怎么用
首先我们先放入我们的测试类,测试类中的类便是用装饰者模式写的
public class ListMaxTest {
public static void main(String[] args) {
List list=new LowListMax(new ArrayList(), 10);
for(int i=0;i<100;i++)
{
System.err.println(i);
list.add(i);
}
}
}
下面是执行结果
0
1
2
3
4
5
6
7
8
9
10
Exception in thread "main" java.lang.RuntimeException: 添加此 参数后,长度会超出
at com.jun.decorator.LowListMax.add(LowListMax.java:21)
at com.jun.decorator.ListMaxTest.main(ListMaxTest.java:12)
当list准备添加第11个参数的时候,就报错了,所以new LowListMax(new ArrayList(), 10);中的10便是这个list的最大参数,接
下来我们来看看这个类是怎么实现的。
public class LowListMax implements List{
private final List list;
private final int max;
public LowListMax(List list,int max)
{
this.list=list;
this.max=max;
}
@Override
public boolean add(T arg0) {
if(list.size()<max) {
this.list.add(arg0);
}else {
throw new RuntimeException("添加此参数后,长度会超出");
}
return true;
}
@Override
public void add(int arg0, T arg1) {
if(list.size()<max) {
this.list.add(arg0,arg1);
}else {
throw new RuntimeException("添加此参数后,长度会超出");
}
}
@Override
public boolean addAll(Collection arg0) {
if(list.size()<max) {
this.list.addAll(arg0);
}else {
throw new RuntimeException("添加此参数后,长度会超出");
}
return true;
}