Aqui temos outra variante do programa HelloWorld, usando alguns design patterns para permitir fraco acoplamento:
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);
}
}
Aqui podemos ver o mesmo programa em Python.
print "Hello, World!"
Aqui temos o mesmo programa em PHP.
<?php
echo "Hello, World!";
?>
E agora temos o mesmo programa em Ruby:
puts "Hello, World!"