突然想写自己的博客,记录一些对自己平时学习的一些总结还有感想,刚好 最近在看设计模式,那就从这里开始吧。
现在的软件开发,很依赖与开源的框架,框架的源码,你可以看到许多都是软件工程,设计模式的最佳实践。
设计模式是人们通过实践而总结出的约定俗成的编写软件的方法,采用良好的设计模式,可以使程序易于拓展与维护,通用的术语,可以使开发人员从更高的层次理解程序。
举个栗子
JAVA I/O库,一般人第一次接触这个库的时候都不容易理解,有许多类,每个类都有不同的作用,太不容易记了。但是(敲黑板),当你知道I/O库的设计采用了装饰器的设计模式所有的类都是用来包装InputStream的,理解起来就简单多了。
在我们设计程序的结构的时候,应当遵循对修改关闭,对拓展开放的原则,添加新功能时,不要修改程序原有的代码。而是去拓展原有的代码。
InputStream是一个抽象类,定义了读取以及一些字节流的操作 ,FileInputStream根据自己的具体需求,继承了InputStream,实现了读取文件的方法。FileInputStream并没有修改InputStream,而是将它包裹起来了,这就是装饰者模式。
现在,我们来实现自己的输入流,将每个字符转变为小写。
public class LowerCaseInputStream extends FilterInputStream
{
public LowerCaseInputStream(InputStream in)
{
super(in);
}
public int read() throws IOException
{
int c = super.read();
return (c == -1 ? c : Character.toLowerCase((char)c));
}
public int read(byte[] b,int offset,int len) throws IOExeption
{
int result = super.read(b,offset,len);
for (int i = offset; i < offset+result;i++)
{
b[i] = (byte)Character.toLowerCase((char)b[i]);
}
return result;
}
}