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

产品设计专业就业方向北京百度推广排名优化

产品设计专业就业方向,北京百度推广排名优化,高端网站建设服务,比较好用的网站一、为何需要建造者模式(Builder)? 在软件系统中,会存在一个复杂的对象,复杂在于该对象包含了很多不同的功能模块。该对象里的各个部分都是按照一定的算法组合起来的。 为了要使得复杂对象里的各个部分的独立性,以及…

一、为何需要建造者模式(Builder)?

在软件系统中,会存在一个复杂的对象,复杂在于该对象包含了很多不同的功能模块。该对象里的各个部分都是按照一定的算法组合起来的。
为了要使得复杂对象里的各个部分的独立性,以及将它们组合在一起的算法需要保持固定(不会轻易改变其算法逻辑),不会随着新需求改变从而改变原有的逻辑。此时就需要用建造者模式了。

特点:
将一个复杂对象的构建和其各个部分之间分离,在同一个算法组合里可以创建出不同的对象。

  • 部件的算法组合、对象的构建、部件的实现之间进行分离。

结构

  • 产品类(Product):存在产品的所有部件属性,需要用来创建的复杂对象。
  • 建造创建者类(Builder):抽象类,定义复杂对象的部件创建的规范(抽象方法)。
  • 具体创建类(ConCreateBuilder):实现 Builder 接口方法,完成具体产品的创建。并且
  • 指挥者类(Director):由指挥者类来调用具体创建者类的方法按照一定的顺序来组装,返回完整的对象产品。

适合应用场景的特点:

  • 产品类里具有不同型号产品的共同属性。(如下文例子中的渐变颜色,形状)
  • 部件的型号不同,创建的逻辑也很可能不相同。(如有不同的代码逻辑来创建形状Point)
  • 部件的组合方式是固定的。(如设置渐变颜色和形状的组合算法是固定的)

请添加图片描述

二、例子

需求:

实现一个画图程序。根据不同形状和不同渐变颜色来创建一个图形。比如,创建一个红橙按比例 50:100 渐变的矩形;创建一个白灰黑按比例 50:70:100 渐变的三角形。(为了方便理解,下面例子不写得过于复杂,就不使用 Graphics 和 Pen 的复杂方式绘图,而使用 Point 数组进行简单绘图)

1、产品:

    //产品类里具有不同型号产品的共同属性。public sealed class Sharp{public Point[] point { get; private set; }public List<Colors> colors { get; private set; }public void setPoint(Point[] p) { point = p; }public void setColors(List<Colors> colors) { this.colors = colors; }}//Sharp 属性:形状public struct Point{public double x;public double y;}//Sharp 属性:渐变颜色public class Colors{public string Rgb { get; set; }public double GradientValue { get; set; }public Colors(string rgb,double gradient){Rgb = rgb;GradientValue = gradient;}}

2、抽象建造者:


public abstract class Builder{protected Sharp Sharp { get; set; }public Builder(){Sharp = new Sharp();}public Sharp GetSharp(){return Sharp;}//部件的组合方式是固定的public abstract void BuilderSharp();public abstract void BuilderColors();}

3、构造建造者(具体创建者):


//矩形构造者public class RectSharpBuilder : Builder{//部件的型号不同,创建的逻辑也很可能不相同。同下public override void BuilderSharp(){Point[] point = new Point[4];point[0].x = 0; point[0].y = 0;point[1].x = 0; point[1].y = 10;point[2].x = 10; point[2].y = 0;point[3].x = 10; point[3].y = 10;Sharp.setPoint(point);}public override void BuilderColors(){List<Colors> colors = new List<Colors>(){new Colors("Red",50),new Colors("Orange",100)};Sharp.setColors(colors);}}//三角形构造者public class TriangleSharpBuilder : Builder{public override void BuilderSharp(){Point[] point = new Point[3];point[0].x = 0; point[0].y = 10;point[1].x = 5; point[1].y = 0;point[2].x = 10; point[2].y = 10;Sharp.setPoint(point);}public override void BuilderColors(){List<Colors> colors = new List<Colors>(){new Colors("White",50),new Colors("Gray",70),new Colors("Black",100)};Sharp.setColors(colors);}}

4、指导者:


public class Director{  public Sharp BuildSharp(Builder builder){builder.BuilderSharp();builder.BuilderColors();return builder.GetSharp();}}

5、主程序:


class Program{static void Main(string[] args){Director director = new Director();Builder RectSharp = new RectSharpBuilder();Builder TriangleSharp = new TriangleSharpBuilder();director.BuildSharp(RectSharp);director.BuildSharp(TriangleSharp);Console.ReadLine();}}
http://www.hengruixuexiao.com/news/5465.html

相关文章:

  • 有什么网站建设软件有哪些写文的免费软件
  • 做网站北京公司个人建网站需要多少钱
  • html5移动网站开发实践最新百度快速收录技术
  • 旅游订票网站开发淄博新闻头条最新消息
  • 山东建设工程信息网站百度seo推广优化
  • 响应式网站建站汕头网站建设方案优化
  • 百度收录查询工具官网谈谈你对seo概念的理解
  • 室内设计知名网站关键词排名优化易下拉霸屏
  • 做网站图片用什么格式最好网络营销企业网站推广
  • 电脑有固定IP 做网站百度应用中心
  • 南山建设网站百度推广登陆
  • 怎么用php做网站方案网站开发培训
  • b2b性质网站怎么进行推广怎么把网站排名排上去
  • 深圳市住建局造价站成品短视频app源码的优点
  • 上海中高端网站建设如何自己制作网页
  • wordpress 获取id宁波网站推广优化外包
  • 网站做百度推广划算吗广告类的网站
  • 最便宜网站建设在线推广企业网站的方法有哪些
  • 视频网站开发意义怎么样引流加微信
  • 网站等保如何做搜索引擎优化培训班
  • 无锡市网站设计杭州百度推广
  • 做网站首页的图片怎么缩小手机百度app下载安装
  • 合肥网站优化seo谷歌浏览器网页版进入
  • 济宁网站制作制作网页教程
  • 现在石家庄做网站的公司有哪几家正规软件开发培训学校
  • 宁波哪家公司做网站好新闻近期大事件
  • 九江建企业网站整站优化是什么意思
  • 网站内容建设流程沈阳seo关键词排名
  • 酷站欣赏站长之家网站查询
  • 照片做视频的软件 模板下载网站好百度竞价seo排名