建造者模式
时间:2020-04-12
本文章向大家介绍建造者模式 ,主要包括建造者模式 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
static void Main(string[] args)
{
/*建造者模式,适合创建复杂对象,与工厂模式的关注点不一样,建造者重点关注,对象过程的创建
*
*
*
*/
{
// 创建 福特 车 注重每个过程的建造
BuilderFord builder = new BuilderFord();
builder.BuilderEngin();
builder.BuilderWheels();
builder.BuilderGearbox();
builder.CreateCar();
}
{
// 创建 BYD
BuilderByd builder = new BuilderByd();
builder.BuilderEngin();
builder.BuilderWheels();
builder.BuilderGearbox();
builder.CreateCar();
}
{
// 这里进一步 进行抽象
BuilderByd builderByd = new BuilderByd();
IBuilder builder = new BuilderFactory(builderByd);
builder.GetCar();
}
Console.WriteLine("Hello World!");
}
public class BuilderFactory : IBuilder { private AbstructBuilder _builder = default(AbstructBuilder); public BuilderFactory(AbstructBuilder builder) => this._builder = builder; public void GetCar()=> this._builder.CreateCar(); } public interface IBuilder { void GetCar(); }
public class BuilderFord : AbstructBuilder { private Wheels _wheels = default(Wheels); private Enginer _enginer = default(Enginer); private Gearbox _gearbox = default(Gearbox); public void BuilderWheels() { _wheels = new Wheels(); } public void BuilderEngin() { _enginer = new Enginer(); } public void BuilderGearbox() { _gearbox = new Gearbox(); } public override void CreateCar() { // 使用上面三个对象 Console.WriteLine($"{_enginer}{_wheels}{_gearbox}"); } }
public abstract class AbstructBuilder { public abstract void CreateCar(); }
原文地址:https://www.cnblogs.com/hnzheng/p/12687719.html
- Spring Boot - Profile不同环境配置
- $.each()与$(selector).each()区别详解
- javascript typeof
- php中json_encode
- Java高级进阶:自定义ClassLoader
- 字符串拼接+和concat的区别
- Spring Boot Runner启动器
- Spring Boot自动配置原理、实战
- Spring Aware容器感知技术
- 深入探究frame和bounds的区别以及setbounds使用
- 如何生成二维码过程详解
- hashCode和identityHashCode的区别你知道吗?
- SpringCloud注册中心高可用搭建
- SpringMVC表单验证器的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mac苹果 配置maven settings文件【注意,与win环境不一样!!!】
- mac小程序开发 本地调试 安装 npm modules
- Deeplearning.ai 课程笔记第一部分:神经网络与深度学习
- 如何从Node.js开始-Visual Studio2017
- Rust竟然没有异常处理?
- MAC系统 JDK 卸载及彻底删除
- 轻松学Pytorch –Mask-RCNN图像实例分割
- docker安装awvs13
- 远程连接kail Permission denied或者refused【已解决】
- 设计模式~原始模型模式(二)
- 面向对象的7种设计原则(6)-迪米特原则
- LeetCode 刷题记录 1-5
- 你掉的是这个免费服务器,还是这个 Docker 实验平台
- 我能赢吗
- 最长公共子串/序列问题