23种设计模式之装饰模式
package com.company.learn.DesignPattern.Decorator;
public abstract class Decorator extends ReadWord {
protected ReadWord reader;
public Decorator(){
}
public Decorator(ReadWord readWord){
this.reader = readWord;
}
}
```java
package com.company.learn.DesignPattern.Decorator;
import java.io.*;
import java.util.ArrayList;
public class ReadEnglishWord extends ReadWord {
@Override
public ArrayList<String> readWord(File file) {
ArrayList<String> wordList = new ArrayList<String>();
try {
FileReader inOne = new FileReader(file);
BufferedReader intwo = new BufferedReader(inOne);
String s = null;
while((s = intwo.readLine())!= null){
wordList.add(s);
}
inOne.close();
intwo.close();
}catch (IOException e){
e.printStackTrace();
}
return wordList;
}
}
```java
package com.company.learn.DesignPattern.Decorator;
import java.io.File;
import java.util.ArrayList;
public abstract class ReadWord {
public abstract ArrayList<String> readWord(File file);
}
```java
package com.company.learn.DesignPattern.Decorator;
import java.io.File;
import java.util.ArrayList;
public class RunDecorator {
public static void main(String[] args) {
ArrayList<String> wordList = new ArrayList<String>();
ReadEnglishWord REW = new ReadEnglishWord();
WordDecorator WD1 = new WordDecorator(REW,new File("/Users/hfc/IdeaProjects/src/com/company/learn/DesignPattern/Decorator/chinese.txt"));
ReadWord reader = WD1;
wordList = reader.readWord(new File("/Users/hfc/IdeaProjects/src/com/company/learn/DesignPattern/Decorator/word.txt"));
for(int i=0;i<wordList.size();i++){
System.out.println(wordList.get(i));
}
WordDecorator WD2 = new WordDecorator(WD1,new File("/Users/hfc/IdeaProjects/src/com/company/learn/DesignPattern/Decorator/englishSentence.txt"));
reader = WD2;
wordList = reader.readWord(new File("/Users/hfc/IdeaProjects/src/com/company/learn/DesignPattern/Decorator/word.txt"));
for(int i=0;i<wordList.size();i++){
System.out.println(wordList.get(i));
}
}
}
```java
package com.company.learn.DesignPattern.Decorator;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
public class WordDecorator extends Decorator{
File decoratorFile;
WordDecorator(ReadWord reader,File decoratorFile){
super(reader);
this.decoratorFile = decoratorFile;
}
public ArrayList<String> readWord(File file) {
ArrayList<String> wordList = reader.readWord(file);
try {
FileReader inOne = new FileReader(decoratorFile);
BufferedReader inTwo = new BufferedReader(inOne);
String s = null;
int m =0;
while((s= inTwo.readLine()) != null){
String word = wordList.get(m);
word = word.concat(" | " +s);
wordList.set(m,word);
m++;
if(m>wordList.size()){
break;
}
}
inTwo.close();
inOne.close();
}catch (Exception e){
e.printStackTrace();
}
return wordList;
}
}
word.txt 内容:
book
apple
pen
chinese.txt 内容:
书本
苹果
钢笔
englishSentence.txt 内容:
which you can learn more Knowleage
one fruit which you can eat
a tool you can use it to write