IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> swift定义iOS数据库框架2 -> 正文阅读

[移动开发]swift定义iOS数据库框架2

动态构建表-构建者模式+解析器模式

内容一:框架结构分析

注意:将SQL语句转为对象方式设计,并且构建。

模式一:核心模式:构建者模式=>构建SQL

  • 1、分析角色?4个角色
    角色一:抽象产品
    角色二:具体产品
    角色三:构建者
    角色四:组装者

  • 2、绘制架构图?
    抽象产品:Expressible(最高层次抽象)=>中文:可表示的具体产品 QueryType、ExpressionType、Value、SchemaType、Expression、 Table
    构建者TableBuilder
    组装者Table

模式二:辅助模式:解析器模式=>解析SQL语句(文法)

  • 1、回顾:什么叫“文法”?

例如:
我是一个屌丝。
我是一个军人。
我是一个程序员鼓励师。 语文:"我"叫做主语,“是”叫做谓语,“屌丝”叫做宾语。语文当中“主谓宾”结构,这样的一种结构称之为”文法“。
语文:还有很多文法,“主谓”结构,“主谓宾”结构…

开发:“a + b + c - d”,算术中,“a”、“b”、“c”、“d"称之为终结符。”+"、"-"称之为非终结符,因为他具有逻辑运算,左右两边必须有符号(变量->值),这样的一种结构我们在程序当中称之为”文法“

  • 2、角色划分
    角色一:抽象表达式
    角色二:终结符表达式
    角色三:非终结符表达式
    角色四:解析器上下文

  • 3、SQL语句案例分析,寻找到终结符和非终结符

    select id,name from t_user where id = 1
    

    这是一种文法(规律可寻)
    抽象表达式:SQL文法(所有SQL语句规范)
    非终结符表达式:select、from、where
    终结符表达式:id、name、t_user
    创建表SQL、插入表SQL、删除表SQL…等SQL语句都是如此…
    SQL语句规范完全满足解析器模式设计

  • 4、具体类角色?
    角色一:抽象表达式Expressible、Binding
    角色二:终结符表达式String
    角色三:非终结符表达式Expression
    角色四:解析器上下文Table

  • 5、学习方法
    分析设计思路,如何找到答案?
    学习了设计模式(首先一上来就是设计模式分析学习)
    第一步:分析框架,使用框架,基本API使用你完全熟悉?
    第二步:核心类是哪个?Connection
    第三步:分析功能?思考:他的SQL是如何构建?
    查看源码你会发现TableBuilder=>对应就是构建者模式
    万一没有按规范怎么办?
    1、分析该功能场景是什么?
    每一种设计模式都有他的对应的场景
    2、采用设计模式进行对比?
    一个个去套或者尝试

内容二:框架设计实现

1、一般优秀框架都会有一些注视(有助于分析框架设计)

  • 🤔思考1:这个数据库目的为了什么?
    目的为了构建SQL语句
  • 🤔思考2:如何构建呢?数据库表字段,对象属性是如何对应的呢?
    当我去翻阅代码时候=>察觉到Binding有个注释:

Binding is a protocol that SQLite.swift uses internally to directly
map SQLite types to Swift types.

含义:将SQLite数据库里面表字段映射到Swift中的对象属性,说白了就是将数据库表字段和属性动态绑定

将name = “NSLog”,t_name
name=>映射=>t_name
中间映射过程有框架动态完成(动态绑定)

🤔思考3:绑定有方向?
数据库=>映射=>Swift属性:Binding
Swift属性=>映射=>数据库:Value->Expressible有个注释:

extensions cannot have inheritance clauses

插入数据=>String=>映射类型->TEXT,验证成立。

2、代码实现=>结构搭建

模式一:核心模式:构建者模式=>构建SQL?

  • 1、抽象产品
    Expressible(最高层次抽象)=>中文:可表示的具体产品
    QueryType、ExpressionType、Value、QueryType、SchemaType、Expression、Table

具体分为以下几类
a类:表达式类型=>具体表达式
b类:数据库操作=>QueryType
insert操作、delete操作…
c类:基本数据类型=>Value
String、Int、Double、Int32、Int64、Bool等…

  • 2、构建者TableBuilder
  • 3、组装者Table

模式二:辅助模式:解析器模式=>解析SQL语句(文法)

  • 角色一:抽象表达式
    Expressible
    Binding
  • 角色二:终结符表达式
    String
  • 角色三:非终结符表达式
    Expression
  • 角色四:解析器上下文
    Table

3、代码实现=>具体实现代码

模式一:核心模式:构建者模式=>构建SQL

  • 1、抽象产品Expressible
    核心属性:SQL语句,所有的SQL都将汇聚到一个Expressible
    例如:将多个Expressible拼接为一个Expressible
    Expressible = “select * from user where id = 1”
    定义一个表达式->Expression
  • 2、具体产品QueryType、ExpressionType、Value、QueryType、SchemaType、Expression、Table

2.1 第一个:ExpressionType定义
泛型设计
2.2 第二个:Expression定义与实现
2.3 第三个:extension ExpressionType定义与实现
扩展一:构造方法
扩展二:表达式属性->提供默认实现
扩展三:有意思->让ExpressionType定义为Value类型
具体细节就会具体分析
2.4 第四个:Value实现
2.5 第五个:QueryType实现
2.6 第六个:SchemaType实现
扩展
后面讲解具体拼接细节我们回过头来再里里
整个SQL构建过程具体代码流程
2.7 第七个:Table实现
结构OK,课后至少3遍以上

  • 3、构建者
    TableBuilder构建SQL
    下一节课:整个SQL构建原理(课后复习)

  • 4、组装者
    Table
    扩展Value

模式二:辅助模式:解析器模式=>解析SQL语句(文法)

  • 角色一:抽象表达式
    Expressible
    Binding
  • 角色二:终结符表达式
    String
  • 角色三:非终结符表达式
    Expression
  • 角色四:解析器上下文
    Table
    SQL转换=>字符串
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:56:51  更:2022-03-13 21:56:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/26 12:22:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码