JS模式:又一个简单的工厂模式
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <script> function Car(options){ this.doors = options.doors || 4; this.state = options.state || "brand new"; this.color = options.color || "silver"; }; function Truck(options){ this.state = options.state || "used"; this.wheelSize = options.wheelSize || "large"; this.color = options.color || "blue"; }; function VehicleFactory(){}; VehicleFactory.prototype.vehicleClass = Car; VehicleFactory.prototype.createVehicle = function( options ){ if(options.vehicleType == "car"){ this.vehicleClass = Car; }else{ this.vehicleClass = Truck; }; return new this.createVehicle(options); }; var carFactory = new VehicleFactory({ vehicleType : 'truck', state : 'like new', color : 'red', wheelSize : 'small' }); console.log( carFactory instanceof VehicleFactory); console.log( carFactory ); function TruckFactory(){}; TruckFactory.prototype = new VehicleFactory(); TruckFactory.prototype.vehicleClass = 'truck'; var truckFactory = new TruckFactory(); console.log( truckFactory instanceof TruckFactory); //抽象 工厂模式---->_-> var AbstractVehicleFactory = (function(){ //定义车辆的类型,用来存储数据 var types = {}; return { registerVehicle : function(type,vehicle){ types[type] = vehicle; }, getVehicle : function(type,customizatoins){ var vehicle = types[type]; return (vehicle) ? new topics[type](customizations) : null; } } })(); </script> </body> </html>
天道酬勤