Advertisement
weberc2

Inheritance Polymorphism vs Interface Polymorphism

Nov 18th, 2013
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.90 KB | None | 0 0
  1. // Reader.java
  2. public interface Reader {
  3.     public String Read();
  4. }
  5.  
  6. // StdinReader.java
  7. import java.io.BufferedReader;
  8. import java.io.IOException;
  9. import java.io.InputStreamReader;
  10.  
  11. public class StdinReader implements Reader {
  12.     public String Read() {
  13.         String input = "";
  14.         try {
  15.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  16.             input = br.readLine();
  17.         } catch (IOException io) {
  18.             io.printStackTrace();
  19.         }
  20.         return input;
  21.     }
  22. }
  23.  
  24. // Writer.java
  25. public interface Writer {
  26.     public void Write(String msg);
  27. }
  28.  
  29. // StdoutWriter.java
  30. public class StdoutWriter implements Writer {
  31.     public void Write(String msg) {
  32.         System.out.println(msg);
  33.     }
  34. }
  35.  
  36. // NetworkWriter.java
  37. public class NetworkWriter implements Writer {
  38.     private String _address;
  39.  
  40.     public NetworkWriter(String address) {
  41.         _address = address;
  42.     }
  43.  
  44.     public void Write(String msg) {
  45.         System.out.println("Writing \"" + msg + "\" to: " + _address);
  46.     }
  47. }
  48.  
  49. // ReaderWriter.java
  50. public class ReaderWriter implements Reader, Writer {
  51.     Reader _reader;
  52.     Writer _writer;
  53.  
  54.     public ReaderWriter(Reader r, Writer w) {
  55.         _reader = r;
  56.         _writer = w;
  57.     }
  58.  
  59.     public String Read() {
  60.         return _reader.Read();
  61.     }
  62.  
  63.     public void Write(String msg) {
  64.         _writer.Write(msg);
  65.     }
  66. }
  67.  
  68. // Main.java
  69. public class Main {
  70.     public static void Example(String exampleName, ReaderWriter rw) {
  71.         rw.Write(exampleName);
  72.         rw.Write("-------------------------------------");
  73.         rw.Write("Enter some text below:");
  74.         String someText = rw.Read();
  75.         rw.Write("You entered: \"" + someText + "\"\n");
  76.     }
  77.  
  78.     public static void main(String[] args) {
  79.         Writer w = new StdoutWriter();
  80.         Reader r = new StdinReader();
  81.         Writer nw = new NetworkWriter("localhost:8080");
  82.  
  83.         Example("StdinReader and StdoutWriter example:", new ReaderWriter(r, w));
  84.         Example("StdinReader and NetworkWriter example:", new ReaderWriter(r, nw));
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement