/**
 * 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;
	}
}