Назначение
Преобразует интерфейс класса в некоторый другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов.
Использование шаблона в JDK
(примеры частично взяты с этого ресурса)
java.io.InputStreamReader(InputStream)(адаптирует InputStream к Reader)
java.io.OutputStreamWriter(OutputStream)(адаптирует OutputStream к Writer)
java.io.DataInputStream(InputStream)(адаптирует InputStream к DataInput)
java.io.DataOutputStream(OutputStream) (адаптирует OutputStream к DataOutput)
java.io.ByteArrayInputStream(byte[]) (адаптирует byte[] к InputStream)
java.io.ByteArrayOutputStream#toByteArray() (адаптирует byte[] к OutputStream)
java.io.CharArrayReader(char[]) (адаптирует char[] к Reader)
java.io.CharArrayWriter#toCharArray() (адаптирует char[] к Writer)
java.io.StringReader(String) (адаптирует String к Reader)
java.io.StringWriter#toString() (адаптирует String к Writer)
java.io.FileInputStream(File) (адаптирует File к InputStream)
java.io.FileOutputStream(File) (адаптирует File к OutputStream)
java.io.FileReader(File) (адаптирует File к Reader)
java.io.FileWriter(File) (адаптирует File к Writer)
java.io.ObjectInputStream(InputStream) (адаптирует InputStream к ObjectInput)
java.io.ObjectOutputStream(OutputStream) (адаптирует OutputStream к ObjectOutput)
java.util.Collections#enumeration(Collection) (адаптирует Collection к Enumeration)
java.util.Collections#list(Enumeration) (адаптирует Enumeration к ArrayList)
java.util.Collections#asLifoQueue(Deque) (адаптирует Deque к Queue)
Фактически, JDBC Driver является адаптером, который преобразует запросы от Java-программы в протокол, понятный БД.
JDBC-ODBC Bridge driver sun.jdbc.odbc.JdbcOdbcDrive (Type 1 driver) является адаптером JDBC к ODBC.
----------------------------------------------------------------
-----------------Java I/O: Adapter/Decorator----------------
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class AdapterDecoratorTest {
public static void main(String[] args) throws IOException {
Writer writer = new OutputStreamWriter(
new GZIPOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("d:/tmp/tmp.zip")),1024)), "UTF8");
//
writer.write("Hello Adapter/Decorator!");
writer.flush();
writer.close();
}
public static void main2(String[] args) throws IOException {
//
File file = new File("d:/tmp/tmp.zip");
OutputStream fileOS = new FileOutputStream(file);
OutputStream bufferedOS = new BufferedOutputStream(fileOS, 1024);
OutputStream gzipOS = new GZIPOutputStream(bufferedOS);
Writer writer = new OutputStreamWriter(gzipOS, "UTF8");
//
writer.write("Hello Adapter/Decorator!");
writer.flush();
writer.close();
}
}
Преобразует интерфейс класса в некоторый другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов.
Использование шаблона в JDK
(примеры частично взяты с этого ресурса)
java.io.InputStreamReader(InputStream)(адаптирует InputStream к Reader)
java.io.OutputStreamWriter(OutputStream)(адаптирует OutputStream к Writer)
java.io.DataInputStream(InputStream)(адаптирует InputStream к DataInput)
java.io.DataOutputStream(OutputStream) (адаптирует OutputStream к DataOutput)
java.io.ByteArrayInputStream(byte[]) (адаптирует byte[] к InputStream)
java.io.ByteArrayOutputStream#toByteArray() (адаптирует byte[] к OutputStream)
java.io.CharArrayReader(char[]) (адаптирует char[] к Reader)
java.io.CharArrayWriter#toCharArray() (адаптирует char[] к Writer)
java.io.StringReader(String) (адаптирует String к Reader)
java.io.StringWriter#toString() (адаптирует String к Writer)
java.io.FileInputStream(File) (адаптирует File к InputStream)
java.io.FileOutputStream(File) (адаптирует File к OutputStream)
java.io.FileReader(File) (адаптирует File к Reader)
java.io.FileWriter(File) (адаптирует File к Writer)
java.io.ObjectInputStream(InputStream) (адаптирует InputStream к ObjectInput)
java.io.ObjectOutputStream(OutputStream) (адаптирует OutputStream к ObjectOutput)
java.util.Collections#enumeration(Collection) (адаптирует Collection к Enumeration)
java.util.Collections#list(Enumeration) (адаптирует Enumeration к ArrayList)
java.util.Collections#asLifoQueue(Deque) (адаптирует Deque к Queue)
Фактически, JDBC Driver является адаптером, который преобразует запросы от Java-программы в протокол, понятный БД.
JDBC-ODBC Bridge driver sun.jdbc.odbc.JdbcOdbcDrive (Type 1 driver) является адаптером JDBC к ODBC.
----------------------------------------------------------------
-----------------Java I/O: Adapter/Decorator----------------
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class AdapterDecoratorTest {
public static void main(String[] args) throws IOException {
Writer writer = new OutputStreamWriter(
new GZIPOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File("d:/tmp/tmp.zip")),1024)), "UTF8");
//
writer.write("Hello Adapter/Decorator!");
writer.flush();
writer.close();
}
public static void main2(String[] args) throws IOException {
//
File file = new File("d:/tmp/tmp.zip");
OutputStream fileOS = new FileOutputStream(file);
OutputStream bufferedOS = new BufferedOutputStream(fileOS, 1024);
OutputStream gzipOS = new GZIPOutputStream(bufferedOS);
Writer writer = new OutputStreamWriter(gzipOS, "UTF8");
//
writer.write("Hello Adapter/Decorator!");
writer.flush();
writer.close();
}
}