博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰设计模式
阅读量:2396 次
发布时间:2019-05-10

本文共 1267 字,大约阅读时间需要 4 分钟。

当某个类的某个方法不适应当前业务的需要
     思路:
    》扩展父类的可供扩展的方法(继承父亲的所有方法并且重写要的那个方法,只需要改变某个方法而扩展所有的方法这是不科学的),可以使有,但不优
    》装饰设计模式(推荐)
    
      开发步骤:
    1)写一个普通类或写一个普通类扩展[extends]一个父类(前面是普通设计模式用的,后面的是使用在web方面例如request等情况的)
    2)写一个需要被包装的实例变量
    3)通过构造方式为被包装的实例变量赋值

    4)对于不    满足需求的方法,重写父类的相关方法

装饰设计类

package cn.itcast.web.decorator;import java.io.BufferedReader;//将BufferedReader进行必包的包装/装饰public class MyBufferedReader {	private BufferedReader br;	private int no;	public MyBufferedReader(BufferedReader br){		this.br = br;	}	//重写父对象的方法	public String readLine() throws Exception{		String line = null;		line = br.readLine();		if(line!=null){			no++;			line = no + ":" + line;		}		return line;	}	//真接使用父对象的方法	public void close() throws Exception{		br.close();	} }
测试类:

package cn.itcast.web.test;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.Reader;import cn.itcast.web.decorator.MyBufferedReader;public class Test1 {	public static void main(String[] args) throws Exception {		Reader r = new FileReader(new File("d:\\abc.txt"));		BufferedReader br = new BufferedReader(r);		MyBufferedReader mbr = new MyBufferedReader(br);		String line = null;		while((line = mbr.readLine())!=null){			System.out.println(line);		}		mbr.close();	}}

转载于:https://my.oschina.net/u/2356176/blog/468001

你可能感兴趣的文章
Netty——ChannelHandlerContext
查看>>
Netty——EventLoop和线程模型
查看>>
Netty——Bootstrap类
查看>>
Map集合的排序和遍历总结
查看>>
Java数据结构和算法-选择类排序(简单选择排序,堆排序)
查看>>
Java数据结构和算法-插入类排序(直接插入排序、二分法插入排序、希尔排序)
查看>>
Java数据结构和算法-交换类排序(冒泡排序、快速排序)
查看>>
Java数据结构和算法-归并排序
查看>>
Java数据结构和算法-基数排序
查看>>
Java数据结构和算法-二分查找
查看>>
Java数据结构和算法-递归应用(汉诺塔、欧几里得求最大公约数、泊松分酒)
查看>>
Java数据结构和算法-贪心和分治算法
查看>>
Java数据结构和算法-动态规划
查看>>
Java数据结构和算法-八皇后、约瑟夫杀人法、大数相乘
查看>>
Java数据结构和算法-树
查看>>
Java大数据-Linux基础
查看>>
Java代码积累
查看>>
Java大数据-Zookeeper
查看>>
Java大数据-反射和动态代理
查看>>
Java大数据-JMS技术
查看>>