看了许多遍设计模式,还是不能完全理解,不知道什么时候才能写出下面这种 Hello World,或者是看懂就行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| public interface MessageStrategy { public void sendMessage(); }
public abstract class AbstractStrategyFactory { public abstract MessageStrategy createStrategy(MessageBody mb); }
public class MessageBody { Object payload; public Object getPayload() { return payload; } public void configure(Object obj) { payload = obj; } public void send(MessageStrategy ms) { ms.sendMessage(); } }
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); } }; } }
public class HelloWorld { 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); } }
|
参见 Jason Tiscione Re:Design Patterns