| /** |
| * PriceCache |
| */ |
| function PriceCache() { |
| } |
| |
| PriceCache.prototype = { |
| getCachedPrice: function(instrumentId) { |
| }, |
| setCachedPrice: function(instrumentId, price) { |
| } |
| } |
| |
| /** |
| * PriceFetcher |
| */ |
| function PriceFetcher() { |
| } |
| |
| PriceFetcher.prototype = { |
| getPriceFromServer: function(instrumentId) { |
| } |
| } |
| |
| |
| /** |
| * PriceService |
| */ |
| function PriceService(priceFetcher, priceCache) { |
| this._priceFetcher = priceFetcher; |
| this._priceCache = priceCache; |
| } |
| |
| PriceService.prototype = { |
| getPrice: function(instrumentId) { |
| var price = this._priceCache.getCachedPrice(instrumentId); |
| if(price==null) { |
| price = this._priceFetcher.getPriceFromServer(instrumentId); |
| this._priceCache.setCachedPrice(instrumentId, price); |
| } |
| return price; |
| } |
| } |