当前位置: 首页 > news >正文

手机建站服务小程序开发查询

手机建站服务,小程序开发查询,拓者设计吧注册还要钱,椒江做网站在JavaScript中#xff0c;有多种常见的设计模式可供使用。以下是13种常见的JavaScript设计模式#xff1a; JavaScript设计模式 单例模式#xff08;Singleton Pattern#xff09;工厂模式#xff08;Factory Pattern#xff09;抽象工厂模式#xff08;Abstract Fac…在JavaScript中有多种常见的设计模式可供使用。以下是13种常见的JavaScript设计模式 JavaScript设计模式 单例模式Singleton Pattern工厂模式Factory Pattern抽象工厂模式Abstract Factory Pattern原型模式Prototype Pattern建造者模式Builder Pattern适配器模式Adapter Pattern装饰器模式Decorator Pattern观察者模式Observer Pattern发布-订阅模式Publish-Subscribe Pattern策略模式Strategy Pattern状态模式State Pattern代理模式Proxy Pattern迭代器模式Iterator Pattern 简要说明 每种设计模式都有其独特的特点和用途下面是对每种设计模式的简要说明 单例模式 (Singleton Pattern): 单例模式用于限制一个类只有一个实例并提供一个全局访问点。 工厂模式 (Factory Pattern): 工厂模式通过使用工厂方法创建对象而不是直接调用构造函数来创建对象。 抽象工厂模式 (Abstract Factory Pattern): 抽象工厂模式提供了一种创建相关对象的接口而无需指定具体类。 原型模式 (Prototype Pattern): 原型模式基于现有对象克隆创建新对象避免了直接实例化。 建造者模式 (Builder Pattern): 建造者模式用于创建复杂对象通过一步一步地构建对象来实现。 适配器模式 (Adapter Pattern): 适配器模式用于将不兼容的接口转换为可兼容的接口。 装饰器模式 (Decorator Pattern): 装饰器模式允许在不修改原始对象的情况下给对象添加新功能。 观察者模式 (Observer Pattern): 观察者模式定义了一种一对多的依赖关系使得多个观察者对象可以同时监听一个主题对象。 发布-订阅模式 (Publish-Subscribe Pattern): 发布-订阅模式允许多个订阅者订阅特定事件当事件发生时发布者会通知所有订阅者。 策略模式 (Strategy Pattern): 策略模式定义了一系列可以互相替换的算法并使得算法的选择与使用独立于客户端。 状态模式 (State Pattern): 状态模式允许对象在内部状态改变时改变其行为使对象看起来似乎修改了其类。 代理模式 (Proxy Pattern): 代理模式提供了一个代理对象来控制对实际对象的访问并可以通过代理对象添加额外的功能。 迭代器模式 (Iterator Pattern): 迭代器模式提供一种访问聚合对象元素的方法而不需要暴露聚合对象的内部结构。 这些设计模式可以帮助您更好地组织和设计JavaScript代码提高代码的可维护性和可扩展性。具体使用哪种设计模式取决于问题的性质和需求。 详细代码说明 以下是对每种设计模式的详细代码说明 单例模式 (Singleton Pattern): var Singleton (function () {var instance;function createInstance() {var object new Object(I am the instance);return object;}return {getInstance: function () {if (!instance) {instance createInstance();}return instance;},}; })();var instance1 Singleton.getInstance(); var instance2 Singleton.getInstance();console.log(instance1 instance2); // Output: true工厂模式 (Factory Pattern): function ShapeFactory() {}ShapeFactory.prototype.createShape function (type) {if (type circle) {return new Circle();} else if (type rectangle) {return new Rectangle();} else if (type triangle) {return new Triangle();} };function Circle() {this.type circle; }function Rectangle() {this.type rectangle; }function Triangle() {this.type triangle; }var factory new ShapeFactory(); var circle factory.createShape(circle); var rectangle factory.createShape(rectangle); var triangle factory.createShape(triangle);console.log(circle.type); // Output: circle console.log(rectangle.type); // Output: rectangle console.log(triangle.type); // Output: triangle抽象工厂模式 (Abstract Factory Pattern): function FurnitureFactory() {}FurnitureFactory.prototype.createChair function () {throw new Error(This method should be overridden); };FurnitureFactory.prototype.createTable function () {throw new Error(This method should be overridden); };function ModernFurnitureFactory() {}ModernFurnitureFactory.prototype Object.create(FurnitureFactory.prototype); ModernFurnitureFactory.prototype.constructor ModernFurnitureFactory;ModernFurnitureFactory.prototype.createChair function () {return new ModernChair(); };ModernFurnitureFactory.prototype.createTable function () {return new ModernTable(); };function VictorianFurnitureFactory() {}VictorianFurnitureFactory.prototype Object.create(FurnitureFactory.prototype); VictorianFurnitureFactory.prototype.constructor VictorianFurnitureFactory;VictorianFurnitureFactory.prototype.createChair function () {return new VictorianChair(); };VictorianFurnitureFactory.prototype.createTable function () {return new VictorianTable(); };function ModernChair() {this.type modern chair; }function ModernTable() {this.type modern table; }function VictorianChair() {this.type victorian chair; }function VictorianTable() {this.type victorian table; }var modernFactory new ModernFurnitureFactory(); var modernChair modernFactory.createChair(); var modernTable modernFactory.createTable();var victorianFactory new VictorianFurnitureFactory(); var victorianChair victorianFactory.createChair(); var victorianTable victorianFactory.createTable();console.log(modernChair.type); // Output: modern chair console.log(modernTable.type); // Output: modern table console.log(victorianChair.type); // Output: victorian chair console.log(victorianTable.type); // Output: victorian table原型模式 (Prototype Pattern): function Shape() {}Shape.prototype.clone function () {throw new Error(This method should be overridden); };function Circle(radius) {this.radius radius; }Circle.prototype Object.create(Shape.prototype); Circle.prototype.constructor Circle;Circle.prototype.clone function () {return new Circle(this.radius); };var circle new Circle(5); var clonedCircle circle.clone();console.log(clonedCircle.radius); // Output: 5建造者模式 (Builder Pattern): function Car() {this.color ;this.model ;this.engine ; }function CarBuilder() {this.car new Car(); }CarBuilder.prototype.setColor function (color) {this.car.color color;return this; };CarBuilder.prototype.setModel function (model) {this.car.model model;return this; };CarBuilder.prototype.setEngine function (engine) {this.car.engine engine;return this; };CarBuilder.prototype.build function () {return this.car; };var car new CarBuilder().setColor(red).setModel(sedan).setEngine(V8).build();console.log(car.color); // Output: red console.log(car.model); // Output: sedan console.log(car.engine); // Output: V8适配器模式 (Adapter Pattern): function MediaPlayer() {}MediaPlayer.prototype.play function (audioType, fileName) {throw new Error(This method should be overridden); };function AudioPlayer() {}AudioPlayer.prototype Object.create(MediaPlayer.prototype); AudioPlayer.prototype.constructor AudioPlayer;AudioPlayer.prototype.play function (audioType, fileName) {if (audioType mp3) {console.log(Playing mp3 file: fileName);} else {throw new Error(Unsupported audio type: audioType);} };function MediaAdapter(audioType) {if (audioType mp3) {this.audioPlayer new AudioPlayer();} }MediaAdapter.prototype.play function (audioType, fileName) {if (audioType mp3) {this.audioPlayer.play(audioType, fileName);} else {throw new Error(Unsupported audio type: audioType);} };function AudioPlayerAdapter() {}AudioPlayerAdapter.prototype Object.create(MediaPlayer.prototype); AudioPlayerAdapter.prototype.constructor AudioPlayerAdapter;AudioPlayerAdapter.prototype.play function (audioType, fileName) {if (audioType mp3) {var mediaAdapter new MediaAdapter(audioType);mediaAdapter.play(audioType, fileName);} else {throw new Error(Unsupported audio type: audioType);} };var audioPlayer new AudioPlayerAdapter(); audioPlayer.play(mp3, song.mp3); // Output: Playing mp3 file: song.mp3装饰器模式 (Decorator Pattern): function Pizza() {}Pizza.prototype.getDescription function () {throw new Error(This method should be overridden); };Pizza.prototype.cost function () {throw new Error(This method should be overridden); };function MargheritaPizza() {}MargheritaPizza.prototype Object.create(Pizza.prototype); MargheritaPizza.prototype.constructor MargheritaPizza;MargheritaPizza.prototype.getDescription function () {return Margherita Pizza; };MargheritaPizza.prototype.cost function () {return 10; };function PizzaDecorator(pizza) {this.pizza pizza; }PizzaDecorator.prototype.getDescription function () {return this.pizza.getDescription(); };PizzaDecorator.prototype.cost function () {return this.pizza.cost(); };function ExtraCheeseDecorator(pizza) {PizzaDecorator.call(this, pizza); }ExtraCheeseDecorator.prototype Object.create(PizzaDecorator.prototype); ExtraCheeseDecorator.prototype.constructor ExtraCheeseDecorator;ExtraCheeseDecorator.prototype.getDescription function () {return this.pizza.getDescription() , Extra Cheese; };ExtraCheeseDecorator.prototype.cost function () {return this.pizza.cost() 2; };var margheritaPizza new MargheritaPizza(); var extraCheesePizza new ExtraCheeseDecorator(margheritaPizza);console.log(extraCheesePizza.getDescription()); // Output: Margherita Pizza, Extra Cheese console.log(extraCheesePizza.cost()); // Output: 12观察者模式 (Observer Pattern): function Subject() {this.observers []; }Subject.prototype.subscribe function (observer) {this.observers.push(observer); };Subject.prototype.unsubscribe function (observer) {var index this.observers.indexOf(observer);if (index ! -1) {this.observers.splice(index, 1);} };Subject.prototype.notify function () {for (var i 0; i this.observers.length; i) {this.observers[i].update();} };function Observer(name) {this.name name; }Observer.prototype.update function () {console.log(this.name received an update); };var subject new Subject();var observer1 new Observer(Observer 1); var observer2 new Observer(Observer 2); var observer3 new Observer(Observer 3);subject.subscribe(observer1); subject.subscribe(observer2); subject.subscribe(observer3);subject.notify(); // Output: Observer 1 received an update // Output: Observer 2 received an update // Output: Observer 3 received an update发布-订阅模式 (Publish-Subscribe Pattern): function PubSub() {this.subscribers {}; }PubSub.prototype.subscribe function (event, callback) {if (!this.subscribers[event]) {this.subscribers[event] [];}this.subscribers[event].push(callback); };PubSub.prototype.unsubscribe function (event,callback) {if (this.subscribers[event]) {var index this.subscribers[event].indexOf(callback);if (index ! -1) {this.subscribers[event].splice(index, 1);}} };PubSub.prototype.publish function (event, data) {if (this.subscribers[event]) {this.subscribers[event].forEach(function (callback) {callback(data);});} };var pubSub new PubSub();var callback1 function (data) {console.log(Callback 1 received data: data); };var callback2 function (data) {console.log(Callback 2 received data: data); };pubSub.subscribe(event1, callback1); pubSub.subscribe(event1, callback2);pubSub.publish(event1, Hello World); // Output: Callback 1 received data: Hello World // Output: Callback 2 received data: Hello WorldpubSub.unsubscribe(event1, callback2);pubSub.publish(event1, Hello Again); // Output: Callback 1 received data: Hello Again10. 状态模式 (State Pattern):javascript function TrafficLight() {this.currentState new RedLightState(this); }TrafficLight.prototype.changeState function (state) {this.currentState state; };TrafficLight.prototype.start function () {this.currentState.start(); };function RedLightState(trafficLight) {this.trafficLight trafficLight; }RedLightState.prototype.start function () {console.log(Red Light - Stop);this.trafficLight.changeState(new GreenLightState(this.trafficLight)); };function GreenLightState(trafficLight) {this.trafficLight trafficLight; }GreenLightState.prototype.start function () {console.log(Green Light - Go);this.trafficLight.changeState(new YellowLightState(this.trafficLight)); };function YellowLightState(trafficLight) {this.trafficLight trafficLight; }YellowLightState.prototype.start function () {console.log(Yellow Light - Prepare to Stop);this.trafficLight.changeState(new RedLightState(this.trafficLight)); };var trafficLight new TrafficLight();trafficLight.start(); // Output: Red Light - StoptrafficLight.start(); // Output: Green Light - GotrafficLight.start(); // Output: Yellow Light - Prepare to StoptrafficLight.start(); // Output: Red Light - Stop空对象模式 (Null Object Pattern): function Animal(name) {this.name name; }Animal.prototype.makeSound function () {throw new Error(This method should be overridden); };function Dog(name) {Animal.call(this, name); }Dog.prototype Object.create(Animal.prototype); Dog.prototype.constructor Dog;Dog.prototype.makeSound function () {console.log(this.name barks); };function NullAnimal() {}NullAnimal.prototype.makeSound function () {console.log(No sound); };function AnimalFactory() {}AnimalFactory.prototype.createAnimal function (name) {if (name dog) {return new Dog(name);} else {return new NullAnimal();} };var animalFactory new AnimalFactory();var animal1 animalFactory.createAnimal(dog); animal1.makeSound(); // Output: dog barksvar animal2 animalFactory.createAnimal(cat); animal2.makeSound(); // Output: No sound模板方法模式 (Template Method Pattern): function Beverage() {}Beverage.prototype.prepare function () {this.boilWater();this.brew();this.pourInCup();this.addCondiments(); };Beverage.prototype.boilWater function () {console.log(Boiling water); };Beverage.prototype.pourInCup function () {console.log(Pouring into cup); };Beverage.prototype.brew function () {throw new Error(This method should be overridden); };Beverage.prototype.addCondiments function () {throw new Error(This method should be overridden); };function Coffee() {}Coffee.prototype Object.create(Beverage.prototype); Coffee.prototype.constructor Coffee;Coffee.prototype.brew function () {console.log(Brewing coffee); };Coffee.prototype.addCondiments function () {console.log(Adding sugar and milk); };function Tea() {}Tea.prototype Object.create(Beverage.prototype); Tea.prototype.constructor Tea;Tea.prototype.brew function () {console.log(Steeping tea); };Tea.prototype.addCondiments function () {console.log(Adding lemon); };var coffee new Coffee(); coffee.prepare(); // Output: // Boiling water // Brewing coffee // Pouring into cup // Adding sugar and milkvar tea new Tea(); tea.prepare(); // Output: // Boiling water // Steeping tea // Pouring into cup // Adding lemon这是一些常见的设计模式的例子
http://www.yutouwan.com/news/415722/

相关文章:

  • 域名到期对网站影响不允许做企业网站
  • 百度上公司做网站汕头网站制作怎么做
  • 响应式网站概况html5做网页
  • 辽宁智能网站建设价位.耐思尼克官方网站
  • 外贸公司招聘条件短视频seo优化排名
  • 网站建设与维护课难吗appstore下载安卓版
  • 网站做301跳转的好处深圳建设工程交易
  • 茶叶手机网站胶州市城乡建设局网站截图
  • 永久免费自助建网站北京大学廉政建设研究中心网站
  • 举例描述该如何布局网站关键词推广型网站建设机构
  • word可以做招聘网站吗企业信用信息查询公示系统山东
  • 网站免费php空间申请广东网站建设设计服务
  • 网站建设费计入那个科目射洪网站建设工作室
  • 交友最好的网站建设wordpress微信主页
  • 湖南智能网站建设费用网站建站上市公司
  • 建筑网站architect郑州管城建设网站
  • 石家庄网站建设公司排名中国建设银行悦生活网站
  • php源码项目门户网站开发网店装修的主要内容有哪些
  • 潍坊免费自助建站模板1.网站建设分为哪几个阶段
  • 网站怎样做才会被百度收录天津如何做百度的网站推广
  • 没有网站没有推广如何做外贸石家庄网站制作工具
  • 做房地产需要做网站吗网站结构布局
  • 网站app搭建wordpress登陆背景
  • 国外注册域名的网站免费网站免费网站平台
  • 英文外贸网站制作网页模版是已经做好的
  • 天鸿建设集团有限公司 网站wordpress建立论坛
  • 做视频网站成本小程序商城推广
  • 便宜网站建设哪家好杭州工业设计
  • 网站怎么做交易关键词优化工具有哪些
  • 佛山网站推广优化公司黑龙江省建设厅官网