zoukankan      html  css  js  c++  java
  • 解决servlet中get方式中中文乱码问题前驱(一):装饰者模式再理解

    package day02;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader;
    
    /**
     * 装饰者模式
     * 这个例子是解决我们get方式乱码的前驱
     * 
     * @author mzy
     *
     */
    public class DecoratorPatternDemo {
    	/*
    	 * 需求:
    	 * 		我们对IO流的工具进行装饰,形成我们特有的方式
    	 * 例如:
    	 * 		给IO流加上行号
    	 * 思考和实现:
    	 * 		其实就是对BufferedReader中的readLine方法进行增强。
    	 * 		做一个我们的BufferedReader类(MyBufferdReader):
    	 * 			其中的bufferedReader就是被装饰类,MyBufferdReader就是装饰类
    	 * 
    	 * 装饰者模式的要求: 装饰者和被装饰者
    	 * 		1.被装饰者不能是被final修饰的
    	 * 		2.在装饰者类中定义一个成员变量来接收被装饰者类的对象。
    	 * 		3.在装饰者类的构造方法中传入被装饰者类,使用前面定义的成员变量来存放被装饰者对象。
    	 * 		4.在被装饰者类中重写被装饰者的方法来进行特定的增强。
    	 */
    	 public static void main(String[] args) throws Exception {
    		/*
    		 * 给BufferdReader前面加上行号
    		 */
    		 BufferedReader br = new BufferedReader(new FileReader("e:/news.txt"));
    		 // 对BufferedReader进行装饰
    		 BufferedReader reader = new MyBufferedReader(br);
    		 
    		 String str;
    		 while((str=reader.readLine()) != null) {
    			 System.out.println(str);
    		 }
    	}
    }	
    // 1. 首先确定了 不是final修饰的
    // 装饰者:MyBufferedReader 被装饰者:BufferedReader
    class MyBufferedReader extends BufferedReader {
    	// 2.在装饰类中定义一个成员变量,用于接收被装饰者类的对象。
    	private BufferedReader in;
    	/*
    	 * 3.在装饰者类中传入被装饰者的对象,使用定义的变量接收传入的被装饰者类。
    	 */
    	public MyBufferedReader(Reader in) {
    		super(in);
    		this.in = (BufferedReader)in;
    	}
    	
    	int count = 1;
    	/*
    	 * 4.在装饰类中重写被装饰类方法,对其方法进行增强。
    	 */
    	@Override
    	public String readLine() throws IOException {
    		// 得到原来的真实的内容
    		String content = in.readLine();
    		
    		if(content != null) {
    			content = count+": "+content;
    			count++;
    		}
    		return content;
    	}
    }


  • 相关阅读:
    网页中防拷贝、屏蔽鼠标右键代码
    Enterprise Library Exception Handling Application Block Part 1
    vs debug 技巧
    Winforms:消除WebBrowser的GDI Objects泄露
    WinForm窗体之间交互的一些方法
    TableLayoutPanel用法
    Winforms:把长ToolTip显示为多行
    Winforms: 不能在Validating时弹出有模式的对话框
    Winforms: 复杂布局改变大小时绘制错误
    读取Excel默认工作表导出XML
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053416.html
Copyright © 2011-2022 走看看