package main;
import bean.MessageBody;
import Factory.AbstractStrategyFactory;
import Factory.impl.DefaultStrategyFactory;
import Strategy.MessageStrategy;
public class HelloWorld {
public static void main(String... args){
MessageBody mBody = new MessageBody();
mBody.configure("Hello world");
AbstractStrategyFactory factory = DefaultStrategyFactory.getInstance();
MessageStrategy mStrategy = factory.createStrategy(mBody);
mBody.send(mStrategy);
}
}
package Factory;
import bean.MessageBody;
import Strategy.MessageStrategy;
public abstract class AbstractStrategyFactory {
public abstract MessageStrategy createStrategy(MessageBody mb);
}
package Factory.impl;
import Factory.AbstractStrategyFactory;
import Strategy.MessageStrategy;
import bean.MessageBody;
public class DefaultStrategyFactory extends AbstractStrategyFactory {
private static DefaultStrategyFactory instance = null;
public static AbstractStrategyFactory getInstance(){
if(instance == null){
instance = new DefaultStrategyFactory();
}
return instance;
}
@Override
public MessageStrategy createStrategy(final MessageBody mb) {
return new MessageStrategy(){
MessageBody mBody = mb;
@Override
public void sendMessage() {
System.out.println(mBody.getMessage());
}
};
}
}
package Strategy;
public interface MessageStrategy {
public void sendMessage();
}
package bean;
import Strategy.MessageStrategy;
public class MessageBody {
private String message;
public String getMessage() {
return message;
}
public void configure(String message) {
this.message = message;
}
public void send(MessageStrategy ms){
ms.sendMessage();
}
}
这是Jason Tiscoini写的,讽刺过分设计的代码。学习并记录一下。