Interface <<interface>> MessageProvider String getMessage0 Plements <<class>> HelloWorldMessage Provider String getMessageo
Interface implements <<interface>> MessageProvider String getMessage() <<class>> HelloWorldMessageProvider String getMessage()
Interface <<interface>> MessageRenderer void render void setMessgeProvider(Message Provider provider) MessageProvider getMessageProvidero implements <<class>> StandardoutMessageRenderer void render void setMessgeProvider(MessageProvider provider) Message Provider getMessage Provider
Interface implements <<interface>> MessageRenderer void render() void setMessgeProvider(MessageProvider provider) MessageProvider getMessageProvider() <<class>> StandardOutMessageRenderer void render() void setMessgeProvider(MessageProvider provider) MessageProvider getMessageProvider()
Hello WorldMessageProvider public class HelloWorldMessageProvider implements MessageProvider t public String getMessageo i return Hello world!
HelloWorldMessageProvider public class HelloWorldMessageProvider implements MessageProvider { public String getMessage() { return "Hello World!"; } }
StandardOutMessageRenderer public class standardOutMessageRenderer implements MessageRenderer t public MessageProvider messageProvider null; public void renders if (messageProvider ==null)t throw new RuntimeException ("Message Provider is null ") System. out. printIn(messageProvider getMessageo): public void setMessageProvider(MessageProvider provider this messageProvider provider public Message Provider getMessageProvidero t return this. message Provider;
StandardOutMessageRenderer public class StandardOutMessageRenderer implements MessageRenderer { public MessageProvider messageProvider = null; public void render() { if (messageProvider == null ) { throw new RuntimeException ("Message Provider is null"); } System.out.println(messageProvider.getMessage()); } public void setMessageProvider (MessageProvider provider) { this.messageProvider = provider; } public MessageProvider getMessageProvider() { return this.messageProvider; } }
Hello World revised, v2) public class HelloWorld Decoupled i public static void main(String[] args)t MessageRenderer mr new StandardoutMessageRenderer: MessageProvider mp new HelloWorldMessageProvidero mr. setMessageProvider(mp); mr render 还有一个小问题: 若想改变消息提供和显示 者还要改变代码
HelloWorld (Revised, v2) public class HelloWorldDecoupled { public static void main(String[] args) { MessageRenderer mr = new StandardOutMessageRenderer; MessageProvider mp = new HelloWorldMessageProvider(); mr.setMessageProvider(mp); mr.render(); } } 还有一个小问题: 若想改变消息提供和显示 者还要改变代码