Adapter模式
使用场景:原程序无法直接使用,需要适当变化之后才能使用,使用Adapter模式弥补差异
种类:
- 类适配器模式(使用继承的适配器)
- 对象适配器模式(使用委托的适配器)
类适配器模式
Banner类
当前实际的类
PrintBanner类
将Banner适配到Print
Print接口
Main所调用的
实例
现有一个接口FileIO,声明了将属性集合保存至文件的方法,这个实例中的Banner为java.util.Properties类
FileIO(Print)
package org.example;
import java.io.*;
public interface FileIO {
public void readFromFile(String filename) throws IOException;
public void writeToFile(String filename) throws IOException;
public void setValue(String key,String value);
public String getValue(String key);
}
FileProperties(PrintBanner)
package org.example;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class FileProperties extends Properties implements FileIO {
public void readFromFile(String filename) throws IOException {
load(new FileInputStream(filename));
}
public void writeToFile(String filename) throws IOException {
store(new FileOutputStream(filename), "written by FileProperties");
}
public void setValue(String key,String value){
setProperty(key, value);
}
public String getValue(String key){
return getProperty(key, "");
}
}
Main
package org.example;
import java.io.IOException;
public class App
{
public static void main( String[] args ) throws IOException {
FileIO f = new FileProperties();
f.setValue("year", "2004");
f.setValue("month","4");
f.setValue("day","21");
f.writeToFile("./src/main/resources/newfile.txt");
}
}