布吉做棋牌网站建设哪家技术好,如何用wordpress站群,有奖竞猜网站建设,一键制作网站软件文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了分享三个使用TextField的细节沉浸式状态样相关的内容#xff0c;本章回中将介绍
如何创建单例模式.闲话休提#xff0c;让我们一起Talk Flutter吧。 … 文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了分享三个使用TextField的细节沉浸式状态样相关的内容本章回中将介绍
如何创建单例模式.闲话休提让我们一起Talk Flutter吧。 1. 概念介绍
我们在本章回中介绍的单例模式是指设计模式中的单例模式该模式可以确保有且仅有一个实例对象属于常用的设计模式之一。我估计大家在项目中经常用到该模式。本章回中将介绍如何使用dart语言来实现单例模式。 2. 思路与方法
2.1 实现思路
实现单例模式的思路主要包含两个部分
创建一个唯一的实例对象;向外提供一个接口来获取实例对象;
创建实例对象时先判断实例对象是否已经存在如果实例对象已经存在就返回已经存在的实例对象否则通过类的构造函数创建一个新的实例对象。
通过接口获取实例对象时返回类中已经创建的实例对象就可以不过需要把类的构造函数私有化这样才能保证类的外部不能使用构造函数来创建类的实例对象。
当然了在Java语言中单例模式有懒汉模式饿汉模式等方式我们在这里介绍的实现思路是最 基础的一种实现方式也就是懒汉模式。
2.2 实现方法
介绍完实现思路后我们按照此思路来实现单例模式详细的步骤如下
创建一个名叫_instance的静态成员来存当单例对象;使用_internal()方法实例化_instance对象相当于私有化类的构造方法提供一个名叫getInstance()的工厂方法返回_instance对象该方法可以保证实例的唯一性
在上面的实现方法中如果类中有成员变量或者方法我们可以在_internal()方法中初始化成员变量或者调用成员方法我们将在后面小节中通过示例代码来演示。
3. 示例代码
class BleImpl {final String deviceId;final String notifyServiceUUId;final String writeServiceUUId;void anyFunc(){///do something}static final _instance BleImpl._internal(ScanDeviceViewModel().connectedDeviceId,PrivateData.notifyCharacteristicUuid,PrivateData.writeServiceUuid,);///创建单例对象,使用了工厂方法BleImpl._internal(this.deviceId,this.notifyServiceUUId,this.writeServiceUUId,){anyFunc();}//factory getInstance() _instance;factory BleImpl() _instance;
}在上面的示例代码中我们创建一个名叫BleImpl的类类中有三个成员变量和一个成员方法。我们在_internal()方法中初始化了三个成员变量同时调用了类的成员方法。
_internal()是dart语言特有的语法它是一个内部库提供的命名构造方法相当于把类的构造方法私有化这样就不能从类的外部创建类的对象。
此外给类外部获取实例对象的方法getInstance()使用了factory关键字这也是dart特有的语法它表示类的工厂方法它保证了返回实例对象的唯一性而且在调用工厂方法时不需要通过类的名称或者对象的名称来调用该方法直接使用方法的名称就可以调用该方法因此我们建议把该方法的名称从传统的getInstance修改成类名也就是代码中的BleImpl这样使用代码更加容易理解。
4. 内容总结
我们在本章回中介绍了单例模式的概念和实现方法其实它的核心思想没有变主要是实现方法和其它语言不一样因此我们单独使用一个章回来介绍它。最后我们对本 章回的内容做一个全面的总结
单例模式主要用来实现一个唯一的实例对象单例模式的实现思路主要包含创建唯一实例对象和返回实例对象两部分创建唯一实例对象使用了dart的_internal()方法返回实例对象使用了dart的工厂方法
看官们与如何创建单例模式相关的内容就介绍到这里欢迎大家在评论区交流与讨论!