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

o2o网站运维建设方案微信app下载安装官方版平板

o2o网站运维建设方案,微信app下载安装官方版平板,住房和城乡建设部注册中心,网络设计网站建设类网站模板系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 文章目录 系列文章目录前言一、什么是建造者模式二、举个栗子三、静态内部类写法四、开源框…系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 文章目录 系列文章目录前言一、什么是建造者模式二、举个栗子三、静态内部类写法四、开源框架中的应用写在最后 前言 前文中我们知道设计模式可以分为三大类创建型模式、结构型模式、行为型模式。创建型模式中有5种前几节里我们分析了单例模式、工厂方法模式、抽象工厂模式、原型模式那么创建型模式还有最后一种模式建造者模式这一节中我们来分析一下建造者模式。 一、什么是建造者模式 建造者模式(Builder Pattern)将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的对象。 可以这么理解对象的构建与它的表示分离就是创建一个对象的实例和成员变量的赋值相分离。建造者模式使用多个简单的对象一步一步构建成一个复杂的对象这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 二、举个栗子 以制作一本儿童绘本为例默默拿起手边的《白雪公主》┐(・o・)┌ 通常绘本由封面、标题、内容、插图、页码来组成这些内容的组成顺序可以随意调整我们用建造者模式来模拟一下制作绘本的过程。 写在代码 Data public class Book {private String cover;private String title;private String content;private String pic;private Integer pageNo;Overridepublic String toString() {return Book{ cover cover \ , title title \ , content content \ , pic pic \ , pageNo pageNo \ };} } 然后再建一个建造者类封装创建过程由使用者根据需要来调用 public class BookBuilder {private Book book new Book();public BookBuilder addCover(String cover){book.setCover(cover);return this;}public BookBuilder addTitle(String title){book.setTitle(title);return this;}public BookBuilder addContent(String content){book.setContent(content);return this;}public BookBuilder addPic(String pic){book.setPic(pic);return this;}public BookBuilder addPageNo(Integer pageNo){book.setPageNo(pageNo);return this;}public Book build(){return book;} }测试一下 public static void main(String[] args) {BookBuilder builder new BookBuilder().addCover(漂亮的封面).addTitle(《白雪公主》).addContent(美丽善良的公主被恶毒的皇后嫉妒被迫逃亡最终被七个小矮人救助。).addPic(漂亮的插图).addPageNo(30);System.out.println(builder.build()); }是不是有点熟悉像不像MyBatis Plus中QueryWrapper的写法后文我们在开源框架的应用中来具体说一说。 三、静态内部类写法 通常我们更习惯使用静态内部类的方式实现建造者模式由它负责产品的组装创建不再需要Builder和Director这样的话代码结构更加紧凑创建过程与产品的属性联系更加紧密同时使得建造者模式的形式更加简洁。 然后我们来修改下代码 Data public class Book {private String cover;private String title;private String content;private String pic;private Integer pageNo;Overridepublic String toString() {return Book{ cover cover \ , title title \ , content content \ , pic pic \ , pageNo pageNo \ };}public static class Builder {private Book book new Book();public BookBuilder addCover(String cover){book.setCover(cover);return this;}public BookBuilder addTitle(String title){book.setTitle(title);return this;}public BookBuilder addContent(String content){book.setContent(content);return this;}public BookBuilder addPic(String pic){book.setPic(pic);return this;}public BookBuilder addPageNo(Integer pageNo){book.setPageNo(pageNo);return this;}public Book build(){return book;}} }测试一下 public static void main(String[] args) {Book book new Book.Builder().addCover(漂亮的封面).addTitle(《白雪公主》).addContent(美丽善良的公主被恶毒的皇后嫉妒被迫逃亡最终被七个小矮人救助。).addPic(漂亮的插图).addPageNo(30).build();System.out.println(book); }是不是简洁和优雅多了(〃‘▽’〃) 四、开源框架中的应用 刚刚在写样例的时候有的同学可能已经发现这种链式写法很像MyBatis Plus的QueryWrapper写法那么就结合MyBatis Plus这个开源持久层框架的源码简单来说一说MyBatis Plus是如何基于建造者模式的思想提供一套流畅的API来构建查询条件的。 由于实际MyBatis Plus源码是很复杂的我们拿一个简化版的来举例 public class QueryWrapperT {private ListString conditions;public QueryWrapperT eq(String column, Object value) {conditions.add(column value);return this;}public QueryWrapperT ne(String column, Object value) {conditions.add(column ! value);return this;}public QueryWrapperT gt(String column, Object value) {conditions.add(column value);return this;}// 其他条件方法...public ListT selectList() {// 根据conditions构建查询语句并执行查询} }在这个样例中QueryWrapper类定义了一系列方法例如eq、ne、gt等用于设置不同的查询条件。每个条件方法都返回QueryWrapper对象本身以便实现链式调用。这里的关键点是在每个条件方法中都将新的条件添加到conditions列表中并返回当前对象的引用。 这样我们就可以使用链式调用的方式在一个语句中设置多个查询条件 QueryWrapperUser queryWrapper new QueryWrapper(); queryWrapper.eq(name, John).ne(age, 30).gt(salary, 5000);这种设计提高了代码的可读性和可维护性使得构建复杂查询条件变得更加直观和简洁。 写在最后 建造者模式的使用场景 适用于创建复杂对象并通过一步步构建对象的方式来隐藏对象构建的细节。 建造者模式的优点 建造者独立易扩展。建造过程可控便于控制细节风险。提高代码复用性 建造者模式的缺点 增加了代码复杂性不易于理解。对象构建过程固定不够灵活。
http://www.w-s-a.com/news/676988/

相关文章:

  • 企业建站哪个好网站建设所用程序
  • 网站建设seo视频定制图片软件
  • 404错误直接转向到网站首页四川省建筑施工企业人员考试平台
  • 手表电商网站智能展厅
  • 南海网站推广梅州做网站公司
  • 昆明专业网站建设公司成都外贸网站建设费用
  • php mysql网站开发项目公司网站宣传设计
  • 自己做网站服务器的备案方法怎么查网站点击量
  • 信息产业部icp备案中心网站织梦做双语网站
  • 爱站网站长seo综合查询工具局网站信息内容建设 自查报告
  • 我想建一个网站怎么建淄博网站推广那家好
  • 做网站和app需要多久河南自助建站建设代理
  • 大连做企业网站的公司宣传平台有哪些类型
  • 如何用微信做网站免费设计logo网站有哪些
  • 服务平台型网站余姚网站定制
  • 网站搭建联系方式太平阳电脑网网站模板
  • 请简述网站制作流程html5网络公司网站模板
  • 海尔集团企业网站建设分析重庆市建设银行网站
  • 介绍公司的网站有哪些广西壮族自治区
  • 网站做rss wordpress9 1短视频安装软件
  • 网站建设价格西安室内设计网站排行榜前十名知乎
  • 用nas建设服务器网站用vs做音乐网站
  • 天津市武清区住房建设网站网站自适应框架
  • 制作移动网站公司网站开发职业规划
  • 网站头部怎样做有气势wordpress 页面 锚
  • 秦皇岛网站建设系统推荐个人网站免费制作
  • 我做夫人那些年网站登录wordpress 扫码付费
  • 网站关键词代码怎么做公司 网站建设
  • 哈尔滨多语言网站建设wordpress分类链接
  • 购物网站项目介绍软件开发流程的五大步骤