然后实现具体的天气服务,这里同样用到了单例模式:
//具体主题public enum WeatherService implements IWeatherService{ instance; private LinkedList<WeatherInfo> weatherInfos = new LinkedList<WeatherInfo>(); private LinkedHashSet<Client> clients = new LinkedHashSet<Client>(); //存放观察者 //添加观察者 @Override public void addClient(Client client) { clients.add(client); } //删除观察者 @Override public boolean deleteClient(Client client) { return clients.remove(client); } //通知观察者 @Override public void notifyClients() { Iterator<Client> iterator = clients.iterator(); while(iterator.hasNext()){ iterator.next().getWeather(weatherInfos.peekFirst()); } } //更新天气 @Override public void updateWeather(WeatherInfo info) { if(weatherInfos.size()>0) if(weatherInfos.peekFirst().equals(info)) return; weatherInfos.push(info); if(clients.size()==0) return; notifyClients(); }}
最后就是具体的客户端(观察者,此处给出两个):
public class ClientAndroidServer implements Client { private static String name = "安卓服务"; private WeatherInfo info; @Override public void getWeather(WeatherInfo info) { this.info = info; dealMsg(); } private void dealMsg(){ System.out.println(name "收到最新天气:time="info.getTime()"msg="info.getWeather()"。马上开始推送消息..."); }}
public class ClientIphoneServer implements Client { private static String name = "苹果服务"; private WeatherInfo info; @Override public void getWeather(WeatherInfo info) { this.info = info; dealMsg(); } private void dealMsg(){ System.out.println(name "收到最新天气:time="info.getTime()"msg="info.getWeather()"。马上开始推送消息..."); }}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-25.html
在进入我们防区就打
然后是回扣