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

asp图片网站源码邢台手机网站建设价格

asp图片网站源码,邢台手机网站建设价格,微信小程序开发方案怎么做,北京网站推广优化定义 建造者模式是一种创建型设计模式#xff0c;它允许你逐步构建复杂对象#xff0c;而无需使用多个构造函数或重载。建造者模式将对象的构建过程与表示分离#xff0c;使得相同的构建过程可以创建不同的表示。 正确写法 假设我们有一个复杂的 Car 对象#xff0c;需要…定义 建造者模式是一种创建型设计模式它允许你逐步构建复杂对象而无需使用多个构造函数或重载。建造者模式将对象的构建过程与表示分离使得相同的构建过程可以创建不同的表示。 正确写法 假设我们有一个复杂的 Car 对象需要逐步构建其各个部分如引擎、轮胎、颜色等。 // 产品类 public class Car {public string Engine { get; set; }public string Tires { get; set; }public string Color { get; set; }public override string ToString(){return $Car: Engine{Engine}, Tires{Tires}, Color{Color};} }// 抽象建造者 public abstract class CarBuilder {protected Car car;public Car GetCar() car;public abstract void BuildEngine();public abstract void BuildTires();public abstract void BuildColor(); }// 具体建造者 public class SportsCarBuilder : CarBuilder {public SportsCarBuilder(){car new Car();}public override void BuildEngine() car.Engine V8;public override void BuildTires() car.Tires High-performance tires;public override void BuildColor() car.Color Red; }public class LuxuryCarBuilder : CarBuilder {public LuxuryCarBuilder(){car new Car();}public override void BuildEngine() car.Engine V6;public override void BuildTires() car.Tires All-season tires;public override void BuildColor() car.Color Black; }// 导演类 public class Director {public void Construct(CarBuilder builder){builder.BuildEngine();builder.BuildTires();builder.BuildColor();} }// 客户端代码 class Program {static void Main(string[] args){Director director new Director();CarBuilder sportsCarBuilder new SportsCarBuilder();director.Construct(sportsCarBuilder);Car sportsCar sportsCarBuilder.GetCar();Console.WriteLine(sportsCar);CarBuilder luxuryCarBuilder new LuxuryCarBuilder();director.Construct(luxuryCarBuilder);Car luxuryCar luxuryCarBuilder.GetCar();Console.WriteLine(luxuryCar);} }类图 #mermaid-svg-sT1eBVxEBrKnuaeh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sT1eBVxEBrKnuaeh .error-icon{fill:#552222;}#mermaid-svg-sT1eBVxEBrKnuaeh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sT1eBVxEBrKnuaeh .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sT1eBVxEBrKnuaeh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sT1eBVxEBrKnuaeh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sT1eBVxEBrKnuaeh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sT1eBVxEBrKnuaeh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sT1eBVxEBrKnuaeh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sT1eBVxEBrKnuaeh .marker.cross{stroke:#333333;}#mermaid-svg-sT1eBVxEBrKnuaeh svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sT1eBVxEBrKnuaeh g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-sT1eBVxEBrKnuaeh g.classGroup text .title{font-weight:bolder;}#mermaid-svg-sT1eBVxEBrKnuaeh .nodeLabel,#mermaid-svg-sT1eBVxEBrKnuaeh .edgeLabel{color:#131300;}#mermaid-svg-sT1eBVxEBrKnuaeh .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-sT1eBVxEBrKnuaeh .label text{fill:#131300;}#mermaid-svg-sT1eBVxEBrKnuaeh .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-sT1eBVxEBrKnuaeh .classTitle{font-weight:bolder;}#mermaid-svg-sT1eBVxEBrKnuaeh .node rect,#mermaid-svg-sT1eBVxEBrKnuaeh .node circle,#mermaid-svg-sT1eBVxEBrKnuaeh .node ellipse,#mermaid-svg-sT1eBVxEBrKnuaeh .node polygon,#mermaid-svg-sT1eBVxEBrKnuaeh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sT1eBVxEBrKnuaeh .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-sT1eBVxEBrKnuaeh g.clickable{cursor:pointer;}#mermaid-svg-sT1eBVxEBrKnuaeh g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-sT1eBVxEBrKnuaeh g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-sT1eBVxEBrKnuaeh .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-sT1eBVxEBrKnuaeh .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-sT1eBVxEBrKnuaeh .dashed-line{stroke-dasharray:3;}#mermaid-svg-sT1eBVxEBrKnuaeh #compositionStart,#mermaid-svg-sT1eBVxEBrKnuaeh .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #compositionEnd,#mermaid-svg-sT1eBVxEBrKnuaeh .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #dependencyStart,#mermaid-svg-sT1eBVxEBrKnuaeh .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #dependencyStart,#mermaid-svg-sT1eBVxEBrKnuaeh .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #extensionStart,#mermaid-svg-sT1eBVxEBrKnuaeh .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #extensionEnd,#mermaid-svg-sT1eBVxEBrKnuaeh .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #aggregationStart,#mermaid-svg-sT1eBVxEBrKnuaeh .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh #aggregationEnd,#mermaid-svg-sT1eBVxEBrKnuaeh .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-sT1eBVxEBrKnuaeh .edgeTerminals{font-size:11px;}#mermaid-svg-sT1eBVxEBrKnuaeh :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Car -string Engine -string Tires -string Color override string ToString() CarBuilder -Car car Car GetCar() abstract void BuildEngine() abstract void BuildTires() abstract void BuildColor() SportsCarBuilder SportsCarBuilder() override void BuildEngine() override void BuildTires() override void BuildColor() LuxuryCarBuilder LuxuryCarBuilder() override void BuildEngine() override void BuildTires() override void BuildColor() Director void Construct(CarBuilder builder) Program static void Main(string[] args) 解释 产品类 (Car)定义了汽车的属性引擎、轮胎、颜色和一个重写的 ToString 方法用于显示汽车的详细信息。抽象建造者 (CarBuilder)定义了一个受保护的 Car 对象并提供了获取汽车的方法 GetCar 以及三个抽象方法 BuildEngine、BuildTires 和 BuildColor。具体建造者 (SportsCarBuilder 和 LuxuryCarBuilder)继承自 CarBuilder具体实现了构建汽车各个部分的方法。导演类 (Director)负责调用具体建造者的构建方法按照一定的顺序构建汽车。客户端代码 (Program)创建了 Director 对象和具体的建造者对象通过导演类的 Construct 方法构建汽车并最终获取和显示汽车的信息。 用途 逐步构建复杂对象当对象的构建过程复杂且需要多个步骤时使用建造者模式可以将构建过程分解为多个方法调用。分离构建过程和表示建造者模式将对象的构建过程与表示分离使得相同的构建过程可以创建不同的表示。避免大量的构造函数避免使用多个构造函数或重载使代码更加清晰和易于维护。 优点 封装性好将对象的构建过程封装在建造者类中客户端代码不需要关心具体的构建细节。代码复用性高相同的构建过程可以创建不同的表示提高了代码的复用性。易于扩展增加新的建造者类时不需要修改现有的代码符合开闭原则。 缺点 代码复杂度增加引入了多个类抽象建造者、具体建造者、导演类等系统结构变得更复杂。增加类的数量每增加一个新的产品类型就需要增加相应的建造者类类的数量会增加。灵活性受限如果产品的内部表示发生变化可能需要修改多个建造者类。 适用场景对象构建过程复杂当对象的构建过程复杂且需要多个步骤时。对象的表示多种多样当需要创建多种不同表示的对象时。避免大量的构造函数当对象的构造函数参数较多且复杂时。 实际开发中的应用 1. 配置文件解析 假设我们需要解析一个复杂的配置文件并根据配置文件的内容创建相应的对象。 代码如下 // 配置对象 public class Configuration {public string Host { get; set; }public int Port { get; set; }public string Username { get; set; }public string Password { get; set; }public override string ToString(){return $Configuration: Host{Host}, Port{Port}, Username{Username}, Password{Password};} }// 抽象建造者 public abstract class ConfigurationBuilder {protected Configuration configuration;public Configuration GetConfiguration() configuration;public abstract void BuildHost();public abstract void BuildPort();public abstract void BuildUsername();public abstract void BuildPassword(); }// 具体建造者 public class ProductionConfigBuilder : ConfigurationBuilder {public ProductionConfigBuilder(){configuration new Configuration();}public override void BuildHost() configuration.Host prod.example.com;public override void BuildPort() configuration.Port 8080;public override void BuildUsername() configuration.Username admin;public override void BuildPassword() configuration.Password securepassword; }public class DevelopmentConfigBuilder : ConfigurationBuilder {public DevelopmentConfigBuilder(){configuration new Configuration();}public override void BuildHost() configuration.Host dev.example.com;public override void BuildPort() configuration.Port 8081;public override void BuildUsername() configuration.Username devuser;public override void BuildPassword() configuration.Password devpassword; }// 导演类 public class ConfigDirector {public void Construct(ConfigurationBuilder builder){builder.BuildHost();builder.BuildPort();builder.BuildUsername();builder.BuildPassword();} }// 客户端代码 class Program {static void Main(string[] args){ConfigDirector director new ConfigDirector();ConfigurationBuilder productionBuilder new ProductionConfigBuilder();director.Construct(productionBuilder);Configuration productionConfig productionBuilder.GetConfiguration();Console.WriteLine(productionConfig);ConfigurationBuilder developmentBuilder new DevelopmentConfigBuilder();director.Construct(developmentBuilder);Configuration developmentConfig developmentBuilder.GetConfiguration();Console.WriteLine(developmentConfig);} }2. 报告生成 假设我们需要生成不同类型的报告如 PDF 报告和 HTML 报告并逐步构建报告的内容。 // 报告对象 public class Report {public string Title { get; set; }public string Content { get; set; }public string Footer { get; set; }public override string ToString(){return $Report: Title{Title}, Content{Content}, Footer{Footer};} }// 抽象建造者 public abstract class ReportBuilder {protected Report report;public Report GetReport() report;public abstract void BuildTitle();public abstract void BuildContent();public abstract void BuildFooter(); }// 具体建造者 public class PdfReportBuilder : ReportBuilder {public PdfReportBuilder(){report new Report();}public override void BuildTitle() report.Title PDF Report Title;public override void BuildContent() report.Content This is the content of the PDF report.;public override void BuildFooter() report.Footer Generated by PDF Report Builder; }public class HtmlReportBuilder : ReportBuilder {public HtmlReportBuilder(){report new Report();}public override void BuildTitle() report.Title HTML Report Title;public override void BuildContent() report.Content This is the content of the HTML report.;public override void BuildFooter() report.Footer Generated by HTML Report Builder; }// 导演类 public class ReportDirector {public void Construct(ReportBuilder builder){builder.BuildTitle();builder.BuildContent();builder.BuildFooter();} }// 客户端代码 class Program {static void Main(string[] args){ReportDirector director new ReportDirector();ReportBuilder pdfBuilder new PdfReportBuilder();director.Construct(pdfBuilder);Report pdfReport pdfBuilder.GetReport();Console.WriteLine(pdfReport);ReportBuilder htmlBuilder new HtmlReportBuilder();director.Construct(htmlBuilder);Report htmlReport htmlBuilder.GetReport();Console.WriteLine(htmlReport);} }总结 建造者模式 通过将对象的构建过程分解为多个方法调用使得对象的创建更加灵活和可控。虽然它增加了系统的复杂度但在需要逐步构建复杂对象的场景中建造者模式能够显著提高代码的可维护性和扩展性。 在我看来切碎一点繁琐一点微操大神优势在我
http://www.hkea.cn/news/14366071/

相关文章:

  • 网站正在建设 h5模板乐华网络公司介绍
  • 交通运输企业标准建设网站网站合作客户
  • 网站建设设计制做俄罗斯外贸的网站设计
  • 无代码建站软件重庆网站seo搜索引擎优化
  • 网站素材模板 站长微信链接的微网站怎么做
  • 高端定制外贸网站如何下载wordpress
  • 福州住房和建设局网站仿摄影网站
  • 能领免做卡的网站深圳营销网站
  • 网站营销公司简介新郑市网站建设小程
  • 变更网站做推广需要备案青海网站制作公司
  • 国外网站 国内访问速度upupw搭建wordpress
  • 教你如何创建自己的网站免费音效素材网站
  • 淮安集团网站建设网站建设管理汇报
  • 做暧暧小视频网站郑州网站建设推荐美软科技
  • 网站排名优化外包公司网站群管理建设
  • 东昌网站建设费用营销策划方案总结
  • 贵州住房与城乡建设部网站菏泽公司网站建设
  • 杭州品牌网站设计可以做微信推送的网站
  • 遂昌网站建设百度seo排名优化软件化
  • 建网站如何备案贵阳网站建设报价
  • 虾米音乐歌曲链接做qq音乐网站php能自己做网站吗
  • 网站被做暗链报告网站建站建设怎么做
  • 做58同城网站需要多少钱重庆专业网站推广报价
  • 网站最近收录百度官网首页登陆
  • 上海有做网站的公司么网站301的作用
  • 怎么让百度收录你的网站网络营销的专业网站
  • 网站建设和前端开发的区别慈溪市网站开发
  • 网站建设中的html页面黔农生态现货交易平台
  • 广告联盟哪个好青岛网站优化价格
  • 网站怎么能快速备案.name后缀的网站