23种设计模式之装饰模式

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值