js设计模式(代理)

代理设计模式

代理模式提供了一个占位符对象,而不是实际的对象。占位符对象将控制对实际对象值的访问。

例如,我们的玩具工厂位于世界许多地方。每个地方都生产许多玩具。

每个地方都生产许多玩具。使用代理模式,可以更轻松地了解每个位置生产了多少玩具。

function GeoCoder() {
    this.getLatLng = function (address) {
        if (address === "Hong Kong") {
            return "52.3700° N, 4.8900° E";
        } else if (address === "North America") {
            return "51.5171° N, 0.1062° W";
        }     
	};
}
function GeoProxy() {
    var coder = new GeoCoder();
    var geoCollector = {};
    return {
        getLatLng: function (location) {
            if (!geoCollector[location]) {
                geoCollector[location] = coder.getLatLng(location);
            }
        	return geoCollector[location];
        }
	};
};
function run() {
    var geo = new GeoProxy();
    geo.getLatLng("Hong Kong");
    geo.getLatLng("North America"); 
}

总结

在这里例子中,代理对象是GeoProxy类,而实际的对象是GeoCoder类,这里的占位符就是代理类,它不起实际的作用,本质上就是将外部的请求转发到实际对象来执行。

 

版权声明:著作权归作者所有。

thumb_up 0 | star_outline 0 | textsms 0