架构师-第11次课-构建者模式
一、课前回顾
二、今天需求
三、解决方案 一样 开发
平常写SQL语句:select * from t_user where t_u_id = 1 group……
2、问题二:使用场景?
每一种设计模式针对一种或者一类场景解决方案 理论:
场景一:相同方法,不同的调用顺序,产生的结果不一样
场景二:多个部件,都可以组装在一个对象上,但是产生的结果不一样 场景三:当一个类非常复杂的时候,并且进行初始化默认的参数(网络请求)
例如:数据库初始化,创建表、动态生成SQL语句
//以下这种写法虽然灵活,但是容易写错,有的时候你也不是作数据库
例如:买的电脑(表示:外观 创建:制造的过程) 案例:创建OC中的UI元素
将一个复杂对象的创建和表示进行分离,同时你的创建顺序不一样,表示也不构建者模式
1、问题一:什么是构建者模式?-Builder设计模式
创建型设计模式:单例模式、工厂模式、构建者模式
构建UI组件 1、标题回顾 2、实现过程回顾 3、重点回顾
四、实现步骤
//框架
保存对象,通过iOSruntime运行时(iOS反射机制)动态读取类属性
和方法,那么我们的框架就可以根据动态读取类的属性和值,动态的生成sql,这样以来,客户端不需要关系我的sql构建过程,只需要知道结果即可 现)
iOS:链式调用
目前这个案例目的:属性Builder设计模式的结构
下一节课:数据库ORM框架(写万能DAO,同时结合Builder设计模式实
实现这个案例:构建电脑 3、案例-用于分析结构?OC实现
角色划分
角色一:IProduct(抽象产品类:协议)
角色二:ConcrateProduct(具体的产品类:实现了IProduct协议) 角色三:IBuilder(抽象构建者:协议)
角色四:ConcrateBuilder(具体的构建者:实现了IBuilder协议) 角色五:统一组装类(可有可无)
例如: let user = User(“Dream”,18) let result = save(user) let result = delete(user) let result = queryAll() let result = update(user) execute(sql) 例如:构建UI
需求:希望传入的参数不一样,UI显示的效果也不一样? UIUtils?
解决方案:构建者模式 将构建者定义为协议 张三:开发UI-1(实现协议) 老王:开发UI-2(实现协议)
设计模式设计程序代码?
不一定非的按照我的这种写法,但是你要知道可以这么设计(目的:客户端调5、案例:控制UI显示?(弹出消息提示框)
一般写法:UIAlertController 首先:传统编码方式 4、绘制UML类结构示意图?
用的时候,不需要关系内部构建过程,只需要知道显示即可,同时还能够更好的扩张程序,更好维护,最终的目的就是解耦和)
五、课后总结
2、总结知识点
构建者模式:实现数据库相关场景(Swift语言)
解决方案:构建者模式