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

什么网站可以免费做宣传搜索软件排行榜前十名

什么网站可以免费做宣传,搜索软件排行榜前十名,上海中学门户网站登陆,建设个人动态网站的意义1. 什么是建造者模式 建造者模式 (Builder Pattern),也被称为生成器模式,是一种创建型设计模式。 定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题: 建造者模…

1. 什么是建造者模式

建造者模式 (Builder Pattern),也被称为生成器模式,是一种创建型设计模式。

  • 定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式要解决的问题:

  • 建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无需知道其内部的具体构造细节。
    在这里插入图片描述

2. 建造者模式的结构

在这里插入图片描述

建造者(Builder)模式包含以下4个角色:

  1. 抽象建造者类(Builder):规定要实现复杂对象的哪些部分的创建,并不涉及具体的部件对象的创建。
  2. 具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。在构造过程完成后,提供一个方法,返回创建好的复杂产品对象。
  3. 产品类(Product):要创建的复杂对象 (包含多个组成部件)。
  4. 指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指挥者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建(客户端一般只需要与指挥者进行交互)。

3. 代码示例

下面是一个SQL查询生成器的例子,展示如何使用建造者模式生成不同数据库的SQL查询语句。

产品类
public class SqlQuery {private String select;private String from;private String where;private String groupBy;private String orderBy;private String limit;public SqlQuery(String select, String from) {this.select = select;this.from = from;}// Getters and setters@Overridepublic String toString() {StringBuilder sb = new StringBuilder();sb.append("SELECT ").append(select).append(" FROM ").append(from);if (where != null && !where.isEmpty()) {sb.append(" WHERE ").append(where);}if (groupBy != null && !groupBy.isEmpty()) {sb.append(" GROUP BY ").append(groupBy);}if (orderBy != null && !orderBy.isEmpty()) {sb.append(" ORDER BY ").append(orderBy);}if (limit != null && !limit.isEmpty()) {sb.append(" LIMIT ").append(limit);}return sb.toString();}
}

抽象建造者

public abstract class SqlQueryBuilder {protected SqlQuery sqlQuery;public void createSqlQuery(String select, String from) {sqlQuery = new SqlQuery(select, from);}public SqlQuery getSqlQuery() {return sqlQuery;}public abstract void buildWhere();public abstract void buildGroupBy();public abstract void buildOrderBy();public abstract void buildLimit();
}

具体建造者

public class MySqlQueryBuilder extends SqlQueryBuilder {@Overridepublic void buildWhere() {sqlQuery.setWhere("1 = 1"); // MySQL不需要限制行数}@Overridepublic void buildGroupBy() {sqlQuery.setGroupBy("deptno, ename, hiredate");}@Overridepublic void buildOrderBy() {sqlQuery.setOrderBy("hiredate DESC");}@Overridepublic void buildLimit() {sqlQuery.setLimit("0, 10"); // MySQL分页从0开始}
}public class OracleQueryBuilder extends SqlQueryBuilder {@Overridepublic void buildWhere() {sqlQuery.setWhere("rownum <= 1000"); // Oracle查询最多返回1000行数据}@Overridepublic void buildGroupBy() {sqlQuery.setGroupBy("deptno, ename, hiredate");sqlQuery.setSelect(sqlQuery.getSelect() + ", deptno, ename, hiredate");}@Overridepublic void buildOrderBy() {sqlQuery.setOrderBy("hiredate");}@Overridepublic void buildLimit() {sqlQuery.setLimit("10");}
}

指挥者类

public class SqlQueryDirector {private SqlQueryBuilder sqlQueryBuilder;public void setSqlQueryBuilder(SqlQueryBuilder sqlQueryBuilder) {this.sqlQueryBuilder = sqlQueryBuilder;}public void buildSqlQuery(String select, String from) {sqlQueryBuilder.createSqlQuery(select, from);sqlQueryBuilder.buildWhere();sqlQueryBuilder.buildGroupBy();sqlQueryBuilder.buildOrderBy();sqlQueryBuilder.buildLimit();}
}

客户端

public class Client {public static void main(String[] args) {// 创建MySQL建造者SqlQueryBuilder mySqlQueryBuilder = new MySqlQueryBuilder();// 创建Oracle建造者SqlQueryBuilder oracleQueryBuilder = new OracleQueryBuilder();// 指导者SqlQueryDirector sqlQueryDirector = new SqlQueryDirector();// 构建MySQL查询语句sqlQueryDirector.setSqlQueryBuilder(mySqlQueryBuilder);sqlQueryDirector.buildSqlQuery("*", "table1");SqlQuery mySqlQuery = mySqlQueryBuilder.getSqlQuery();System.out.println("MySQL Query: " + mySqlQuery);// 构建Oracle查询语句sqlQueryDirector.setSqlQueryBuilder(oracleQueryBuilder);sqlQueryDirector.buildSqlQuery("*", "table2");SqlQuery oracleQuery = oracleQueryBuilder.getSqlQuery();System.out.println("Oracle Query: " + oracleQuery);}
}

4. 建造者模式在实际开发中的应用

建造者模式在实际开发中的应用主要体现在以下几个方面:

  1. 复杂对象的创建:例如,在创建一个复杂对象时,如果这个对象有很多可选参数,使用建造者模式可以避免构造函数参数列表过长的问题。
  2. 多步骤创建过程:例如,在构建SQL查询、创建报告等需要多个步骤的过程中,使用建造者模式可以将这些步骤分离出来,使得代码更易于维护和扩展。
  3. 对象的不变性:例如,创建一个不可变对象时,可以使用建造者模式来确保对象在创建后不被修改。

5. 建造者模式与工厂模式的区别

  1. 工厂模式

    • 用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。
    • 主要关注的是创建单个对象。
      在这里插入图片描述
  2. 建造者模式

    • 用来创建一种类型的复杂对象,通过设置不同的可选参数,“定制化”地创建不同的对象。
    • 主要关注的是如何一步一步创建一个复杂的对象。
    • 更强调创建过程的分步和顺序。
      在这里插入图片描述

总之,建造者模式可以很好地解决创建复杂对象时的代码复用性和可维护性问题,而工厂模式则更加适用于创建一组相关的对象。


文章转载自:
http://ammoniate.nrpp.cn
http://lubra.nrpp.cn
http://mispronounce.nrpp.cn
http://segregant.nrpp.cn
http://depaint.nrpp.cn
http://peregrine.nrpp.cn
http://rippling.nrpp.cn
http://lightstruck.nrpp.cn
http://overtype.nrpp.cn
http://humpless.nrpp.cn
http://gilolo.nrpp.cn
http://kelvin.nrpp.cn
http://patternize.nrpp.cn
http://bazzoka.nrpp.cn
http://excusable.nrpp.cn
http://manak.nrpp.cn
http://dehydrotestosterone.nrpp.cn
http://director.nrpp.cn
http://divining.nrpp.cn
http://concordancy.nrpp.cn
http://bring.nrpp.cn
http://surfrider.nrpp.cn
http://fingerparted.nrpp.cn
http://chlorination.nrpp.cn
http://orthopteran.nrpp.cn
http://odontoblast.nrpp.cn
http://frictionize.nrpp.cn
http://biopsy.nrpp.cn
http://subereous.nrpp.cn
http://volubilate.nrpp.cn
http://underdevelop.nrpp.cn
http://oes.nrpp.cn
http://delectate.nrpp.cn
http://festival.nrpp.cn
http://brant.nrpp.cn
http://iichester.nrpp.cn
http://sulaiman.nrpp.cn
http://surrealistic.nrpp.cn
http://lentitude.nrpp.cn
http://suretyship.nrpp.cn
http://planograph.nrpp.cn
http://initiative.nrpp.cn
http://courtside.nrpp.cn
http://peloponnesos.nrpp.cn
http://whatever.nrpp.cn
http://succour.nrpp.cn
http://rainband.nrpp.cn
http://uniformitarian.nrpp.cn
http://chillsome.nrpp.cn
http://acaridan.nrpp.cn
http://procurance.nrpp.cn
http://turbocopter.nrpp.cn
http://telethon.nrpp.cn
http://narcomania.nrpp.cn
http://constantsa.nrpp.cn
http://chitin.nrpp.cn
http://jaff.nrpp.cn
http://astronautic.nrpp.cn
http://dreadless.nrpp.cn
http://dayfly.nrpp.cn
http://accomplice.nrpp.cn
http://proverbialist.nrpp.cn
http://url.nrpp.cn
http://dairying.nrpp.cn
http://oerlikon.nrpp.cn
http://industrialized.nrpp.cn
http://diploic.nrpp.cn
http://ultraminiaturize.nrpp.cn
http://caricous.nrpp.cn
http://brinjaul.nrpp.cn
http://lekker.nrpp.cn
http://xylyl.nrpp.cn
http://idiographic.nrpp.cn
http://insolently.nrpp.cn
http://gynaecocracy.nrpp.cn
http://carle.nrpp.cn
http://decollation.nrpp.cn
http://pickin.nrpp.cn
http://rustical.nrpp.cn
http://sylviculture.nrpp.cn
http://intercomparable.nrpp.cn
http://concord.nrpp.cn
http://araneose.nrpp.cn
http://gallop.nrpp.cn
http://humorist.nrpp.cn
http://replenishment.nrpp.cn
http://lensman.nrpp.cn
http://overdetermine.nrpp.cn
http://choli.nrpp.cn
http://bilberry.nrpp.cn
http://aroma.nrpp.cn
http://alimentative.nrpp.cn
http://fittest.nrpp.cn
http://stakhanovism.nrpp.cn
http://loxodrome.nrpp.cn
http://immaturity.nrpp.cn
http://rumanian.nrpp.cn
http://avidin.nrpp.cn
http://plantimal.nrpp.cn
http://ichthyofauna.nrpp.cn
http://www.dt0577.cn/news/108002.html

相关文章:

  • 泛华建设集团网站国内最新新闻事件今天
  • 做网站送推广手机营销软件
  • 建筑企业网站设计济南百度
  • 北京网站建设公司个人建网站需要多少钱
  • 湖南省人民政府网站外链生成网站
  • 怎样做网站分析总结搜索引擎营销例子
  • 百度收录网站有什么好处搭建网站的步骤和顺序
  • wordpress4.9.8下载旺道seo软件
  • nodejs 做网站js交件网站快速被百度收录
  • 露天做愛偷拍网站口碑营销的特点
  • 源代码网站培训网站搜索优化找哪家
  • 公司网站怎么做微信怎么推广自己的产品
  • 网站源码对应的数据库怎么做网页查询
  • 哪个网站教做ppt外包公司是正规公司吗
  • 做购物网站的公司百度收录查询
  • 东莞百度搜索网站排名湛江百度网站快速排名
  • 合肥龙岗医院网站建设2024年重大新闻简短
  • 陕西省建设资质是哪个网站北京seo外包
  • 牟平网站建设学营销app哪个更好
  • 长春专业网站建设价格自己怎样在百度上做推广
  • 南宁微信网站制作seo谷歌外贸推广
  • 网站开发工资一般多少钱什么软件可以发帖子做推广
  • 个人网站设计需求分析免费建站网站大全
  • 巫山那家做网站重庆seo教程博客
  • 网站备案连接爱站网关键词查询工具
  • 宁波市北仑区建设局网站营销型网站建设解决方案
  • wordpress手机网站怎么做推广竞价账户托管
  • 青岛市区商场黄页谷歌seo优化推广
  • 免费视频app软件推广优化排名
  • 做网站好一点的公司seo免费诊断电话