Heute wird nicht geproggert, sondern gepatternt :-D
Allgemein Pattern
Also heute ist es soweit, will mal wieder ein bisserl an meinen Skills arbeiten. Aus diesem Grunde möchte ich heute mal ein Strategy- und ein Factory-Pattern implementieren.
Bevor ich jetzt alle langweile einfach den Code anschauen!
Damit ich halt mit Java ein bisserl in Übung bleibe, mach ich mal Java.
Aber ich denke der Code ist nicht so schwer zu verstehen, so dass es auch .NET Spezialisten ihn lesen können!
Kategorie Also heute ist es soweit, will mal wieder ein bisserl an meinen Skills arbeiten. Aus diesem Grunde möchte ich heute mal ein Strategy- und ein Factory-Pattern implementieren.
Bevor ich jetzt alle langweile einfach den Code anschauen!
Damit ich halt mit Java ein bisserl in Übung bleibe, mach ich mal Java.
Aber ich denke der Code ist nicht so schwer zu verstehen, so dass es auch .NET Spezialisten ihn lesen können!
//Hier das Interface für das Strategy
public interface MessageStrategy {
public void sendMessage();
}
//Hier definiere ich einfach mal die Basis für die Abstract-Factory, sollte wohl kein Geheimnis sein
public abstract class AbstractStrategyFactory {
public abstract MessageStrategy createStrategy(MessageBody mb);
}
// Hier definiere ich mal den Message-Body, der später dann irgendwann durch die Strategy ausgegeben werden soll.
public class MessageBody {
Object payload;
public Object getPayload() {
return payload;
}
public void configure(Object obj) {
payload = obj;
}
// Hier das Strategy!!!
public void send(MessageStrategy ms) {
ms.sendMessage();
}
}
//Hier definiere ich jetzt mal die konkrete Factory, damit ich was von der Abstract-Factory habe
public class DefaultFactory extends AbstractStrategyFactory {
private DefaultFactory() {;}
static DefaultFactory instance;
public static AbstractStrategyFactory getInstance() {
if (instance==null) instance = new DefaultFactory();
return instance;
}
public MessageStrategy createStrategy(final MessageBody mb) {
return new MessageStrategy() {
MessageBody body = mb;
public void sendMessage() {
Object obj = body.getPayload();
System.out.println((String)obj);
}
};
}
}
//So und nun lange Rede kurzer Sinn, jetzt wird alles zusammen geworfen und SCHÖN!!!
public class Program {
public static void main(String[] args) {
MessageBody mb = new MessageBody();
mb.configure("Hello World!");
AbstractStrategyFactory asf = DefaultFactory.getInstance();
MessageStrategy strategy = asf.createStrategy(mb);
mb.send(strategy);
}
}
Also mir gefällt es!!!!!
Die Frage ist nur ob ein
public class Program {
public static void main(String[] args) {
System.out.println("Hello World!!!");
}
}
nicht den gleichen Effekt hat
Gruß JJR
public interface MessageStrategy {
public void sendMessage();
}
//Hier definiere ich einfach mal die Basis für die Abstract-Factory, sollte wohl kein Geheimnis sein
public abstract class AbstractStrategyFactory {
public abstract MessageStrategy createStrategy(MessageBody mb);
}
// Hier definiere ich mal den Message-Body, der später dann irgendwann durch die Strategy ausgegeben werden soll.
public class MessageBody {
Object payload;
public Object getPayload() {
return payload;
}
public void configure(Object obj) {
payload = obj;
}
// Hier das Strategy!!!
public void send(MessageStrategy ms) {
ms.sendMessage();
}
}
//Hier definiere ich jetzt mal die konkrete Factory, damit ich was von der Abstract-Factory habe
public class DefaultFactory extends AbstractStrategyFactory {
private DefaultFactory() {;}
static DefaultFactory instance;
public static AbstractStrategyFactory getInstance() {
if (instance==null) instance = new DefaultFactory();
return instance;
}
public MessageStrategy createStrategy(final MessageBody mb) {
return new MessageStrategy() {
MessageBody body = mb;
public void sendMessage() {
Object obj = body.getPayload();
System.out.println((String)obj);
}
};
}
}
//So und nun lange Rede kurzer Sinn, jetzt wird alles zusammen geworfen und SCHÖN!!!
public class Program {
public static void main(String[] args) {
MessageBody mb = new MessageBody();
mb.configure("Hello World!");
AbstractStrategyFactory asf = DefaultFactory.getInstance();
MessageStrategy strategy = asf.createStrategy(mb);
mb.send(strategy);
}
}
Also mir gefällt es!!!!!
Die Frage ist nur ob ein
public class Program {
public static void main(String[] args) {
System.out.println("Hello World!!!");
}
}
nicht den gleichen Effekt hat
Gruß JJR