打印稿的5种设计模式分别是什么

  介绍

这篇文章主要介绍打印稿的5种设计模式分别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

设计模式是可以帮助开发人员解决问题的模板。在本中涉及的模式太多了,而且它们往往针对不同的需求。但是,它们可以被分为三个不同的组:

    <李> <强>结构模式强处理不同组件(或类)之间的关系,并形成新的结构,以提供新的功能。结构模式的例子有<代码>复合,<代码>适配器代码和<代码>装饰> <李> <强>行为模式将组件之间的公共行为抽象成一个独立的实体。行为模式的例子有命令,策略和我个人最喜欢的一个:<代码>观察者模式> <>李创建模式专注于类的实例化,让我们更容易创建新的实体。我说的是工厂方法,单例和抽象工厂。

<强>单例模式

单例模式可能是最著名的设计模式之一。它是一种创建模式,因为它确保无论我们尝试实例化一个类多少次,我们都只有一个可用的实例。

处理数据库连接之类的可以单例模式,因为我们希望一次只处理一个,而不必在每个用户请求时重新连接。

类MyDBConn {   保护静态实例:MyDBConn | null=零   私人id:数量=0      构造函数(){   这一点。id=math . random ()   }      公共getID():{数量   返回this.id   }      公共静态getInstance (): MyDBConn {   如果(! MyDBConn.instance) {   MyDBConn。实例=new MyDBConn ()   }   返回MyDBConn.instance   }   }      const连接=[   MyDBConn.getInstance (),   MyDBConn.getInstance (),   MyDBConn.getInstance (),   MyDBConn.getInstance (),   MyDBConn.getInstance ()   ]      连接。forEach (c=比;{   console.log (c.getID ())   })

现在,虽然不能直接实例化类,但是使用<代码> getInstance 方法,可以确保不会有多个实例。在上面的示例中,可以看到包装数据库连接的伪类如何从该模式中获益。

这个事例展示了无论我们调用<代码> getInstance 方法多少次,这个连接总是相同的。

上面的运行结果:

0.4047087250990713   0.4047087250990713   0.4047087250990713   0.4047087250990713   0.4047087250990713

<>强工厂模式

<代码>工厂模式> 单例模式一样。但是,这个模式并不直接在我们关心的对象上工作,而是只负责管理它的创建。

解释一下:假设我们通过编写代码来模拟移动车辆,车有很多类型,例如汽车,自行车和飞机,移动代码应该封装在每个<代码>工具> 移动方法的代码可以是通用的。

这里的问题是如何处理对象创建?可以有一个具有3个方法的单一<代码> 类创造者,或者一个接收参数的方法。在任何一种情况下,扩展该逻辑以支持创建更多<代码> vehices>

但是,如果决定使用工厂方法模式,则可以执行以下操作:

现在,创建新对象所需的代码被封装到一个新类中,每个类对应一个车辆类型。这确保了如果将来需要添加车辆,只需要添加一个新类,而不需要修改任何已经存在的东西。

接着来看看,我们如何使用<代码> 手稿来实现这一点:

界面车辆{   移动():空白   }      类汽车实现车辆{      公共移动():空白{   console.log(“移动车!“)   }   }      类自行车实现车辆{      公共移动():空白{   console.log(“移动自行车!“)   }   }      类飞机实现车辆{      公共移动():空白{   console.log(“飞行飞机!“)   }   }//VehicleHandler是“抽象的”,因为没有人会实例化它实例化它//我们要扩展它并实现抽象方法   抽象类VehicleHandler {//这是真正的处理程序需要实现的方法   公共抽象createVehicle():车辆      公共moveVehicle():空白{   const myVehicle=this.createVehicle ()   myVehicle.move ()   }   }      类PlaneHandler延伸VehicleHandler {      公共createVehicle():车辆{   返回新飞机()   }   }      类CarHandler延伸VehicleHandler {      公共createVehicle():车辆{   返回的新车()   }   }      类BicycleHandler延伸VehicleHandler {      公共createVehicle():车辆{   返回新自行车()   }   }///用户代码……   const飞机=new PlaneHandler ()   const汽车=new CarHandler ()      planes.moveVehicle ()   cars.moveVehicle ()

打印稿的5种设计模式分别是什么