Skip to content

Instantly share code, notes, and snippets.

@misugijunz
Created December 19, 2010 15:03
Show Gist options
  • Save misugijunz/747396 to your computer and use it in GitHub Desktop.
Save misugijunz/747396 to your computer and use it in GitHub Desktop.
is your Java's "Hello World" OOP enough?
interface Printer {
void print(Message message);
}
class Message {
private String message;
public Message(String message) {
this.message = message;
}
public void print(Printer printer) {
printer.print(this);
}
public String toString() {
return message;
}
}
abstract class AbstractPrinterFactory {
public static AbstractPrinterFactory getFactory(){
return new SystemOutPrinterFactory();
}
public abstract Printer getPrinter();
}
class SystemOutPrinterFactory extends AbstractPrinterFactory {
public Printer getPrinter() {
return new SystemOutPrinter();
}
}
class SystemOutPrinter implements Printer {
public void print(Message message) {
System.out.println(message);
}
}
public class HelloWorld {
public static void main(String[] args) {
Message message = new Message("Hello, World!");
AbstractPrinterFactory factory = AbstractPrinterFactory.getFactory();
Printer printer = factory.getPrinter(); message.print(printer);
}
}
@akoidan
Copy link

akoidan commented May 22, 2018

Ah, hardcoded string, meh...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment