public class Dome {
/**
* 装饰者设计模式
*
*
* 打个比方:被装饰者就是你玩游戏的新角色,他是裸装的
* 以这个角色为对象放入到参数中去, 被逐个逐个的重写的readLine()方法给改变(也就是穿上了装备了)
* 大概就是这个的意思(我是以我的观点写的,请不要当真)
*/
public static void main(String[] args) throws IOException{
//创建一个被装饰者对象,拿到的是这个路径的文件里的值------这就是被装饰者
File file=new File("C:\\Users\\Administrator\\Desktop\\宇宙\\练习1\\src\\com\\a.txt");
BufferedReader buffer=new BufferedReader(new FileReader(file));
//把被装饰者值变成 行号。值————————————
//创建二个装饰类的对象 来接收被装饰者的对象
BufferedLine line=new BufferedLine(buffer);
BufferedEnd end=new BufferedEnd(line);
String content=end.readLine();
System.out.println(content);
//会输出(文件的值是我乱打的)===》1.dd得分发撒传单_________
}
}
//行号 继承的是被装饰者
class BufferedLine extends BufferedReader{
//维护一个被装饰者类的对象
BufferedReader buffer;
int i=0;
//传进来的是被装饰者的对象
public BufferedLine(BufferedReader buffer) {
super(buffer);
//把传进来被装饰者的对象给成员变量buffer
this.buffer=buffer;
}
public String readLine() throws IOException{
i++;
String line=buffer.readLine();
//把已经改变的值返回给调用者
return i+"."+line;
}
}
//分号
class BufferedEnd extends BufferedReader{
//维护一个被装饰者类的对象
BufferedReader buffer;
//传进来的是被装饰者的对象
public BufferedEnd(BufferedReader buffer) {
super(buffer);
//把传进来被装饰者的对象给成员变量buffer
this.buffer=buffer;
}
public String readLine() throws IOException{
String line=buffer.readLine();
//把已经改变的值返回给调用者
return line+"_________";
}
}
设计者模式
最新推荐文章于 2024-04-26 00:03:02 发布