设计模式02———建造者模式 c#

这篇具有很好参考价值的文章主要介绍了设计模式02———建造者模式 c#。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先我们打开一个项目

设计模式02———建造者模式 c#,设计模式,建造者模式

在这个初始界面我们需要做一些准备工作

设计模式02———建造者模式 c#,设计模式,建造者模式

建基础通用包

设计模式02———建造者模式 c#,设计模式,建造者模式

创建一个Plane 重置后 缩放100倍 加一个颜色

设计模式02———建造者模式 c#,设计模式,建造者模式

更换天空盒(个人喜好)

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

任务:使用【UI】点击生成6种车零件组装不同类型车 【建造者模式】

首先资源商店下载车模型

设计模式02———建造者模式 c#,设计模式,建造者模式

将Car导入资源拖拽至场景 将导入包放进WBag外包方便整理

设计模式02———建造者模式 c#,设计模式,建造者模式

将Car完全解压缩 为了取出小车各部分零件 方便我们组装车

设计模式02———建造者模式 c#,设计模式,建造者模式

拆分第一个组件 车体 命名为CarBody 放进预制体包Prefabs

设计模式02———建造者模式 c#,设计模式,建造者模式

删除场景中的 CarBody

设计模式02———建造者模式 c#,设计模式,建造者模式

拆分第二个组件 车座命名为 CarShadle

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

将剩余物体 设置 成空父物体的子物体 作为一个整体 命名为 CarWheels

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

准备工作做完后    接下我们做【建造者模式】

建造者模式属于23设计模式中的一种 是一种创建型模式

通常是为了 通过多种组件 由指挥者 拼装出 多种不同所需产品 

建造者模式最低需要四个类就可以完成加上Main类中调用需要五个

首先需要         【产品类】

其实需要         【抽象建造类】

再其次需要     【建造具体类】

再再其次需要 【指挥者类】

最后我们通过Main继承Mono挂载再脚本上调用即可

实现:

1.创建脚本【产品类】:

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
public class Car{
    public GameObject CarPart {
        get;
        set;
    }
}

2.【抽象建造类】:

设计模式02———建造者模式 c#,设计模式,建造者模式

public abstract class IBuildCar{
    public abstract void SetCarBody();
    public abstract Car GetCar();
}

3.【建造具体类】:

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
public class BuildCarA : IBuildCar{
    Car car;
    public BuildCarA(Car car){
        this.car = car;
    }
    public override void SetCarBody(){
        car.CarPart = Resources.Load<GameObject>("Prefabs/CarBody");
        if(car.CarPart != null)
            GameObject.Instantiate(car.CarPart,new Vector3(0,0,0),Quaternion.identity);
    }
    public override Car GetCar(){
        return car;
    }
}

4.【指挥者类】:

设计模式02———建造者模式 c#,设计模式,建造者模式

public class Director{
    public IBuildCar type;
    public Director(IBuildCar type){
        this.type = type;
    }
    public void GetCarBody() {
        type.SetCarBody();
    }
}

5.【控制挂载类】

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
public class Main : MonoBehaviour{
    private void Start(){
        Car car = new Car();
        //里氏替换
        IBuildCar type = new BuildCarA(car);
        Director d1 = new Director(type);
        d1.GetCarBody();
    }
}

我们回到unity场景中创建一个空物体改名Obj 重置位置 将Main脚本挂载

运行即可生成

设计模式02———建造者模式 c#,设计模式,建造者模式

接下来我们利用UI + 事件 控制【建造者模式】

1.【产品类】 不动代码

2.【抽象建造类】        不动代码

3.【建造具体类】        修改代码:

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
public class BuildCarA : IBuildCar{
    //按钮计数器
    int count = 0;
    Car car;
    public BuildCarA(Car car){
        this.car = car;
    }
    public override void SetCarBody(){
        count++;
        car.CarPart = Resources.Load<GameObject>("Prefabs/CarBody");
        if(car.CarPart != null && count % 2 != 0)
            GameObject.Instantiate(car.CarPart,new Vector3(0,1,0),new Quaternion(0,10,10,0));
    }
    public override Car GetCar(){
        return car;
    }
}
4.【指挥者类】      不动代码

5.【控制挂载类】  修改代码:

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
using UnityEngine.UI;
public class Main : MonoBehaviour{
    //开放Button按钮
    public Button setCarBodyButton;
    //按钮计数器
    int count = 0;
    private void Start(){
        Car car = new Car();
        //里氏替换
        IBuildCar type = new BuildCarA(car);
        Director d1 = new Director(type);
        setCarBodyButton.onClick.AddListener(() => d1.GetCarBody());
    }
    public void DestroyCarBody(){
        if (count % 2 == 0)
            Destroy(GameObject.Find("CarBody(Clone)"));
    }
}
我们回到unity场景中创建button     【做一个折叠按钮】

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

ctrl + d复制 Button

设计模式02———建造者模式 c#,设计模式,建造者模式

将未开启的Button 改名为 Close 开启的Button改名为 open

修改Panel尺寸

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

设计模式02———建造者模式 c#,设计模式,建造者模式

新建Button 作为 创建车体的按钮 改名为 ButtonA

设计模式02———建造者模式 c#,设计模式,建造者模式

开启 按钮事件:

设计模式02———建造者模式 c#,设计模式,建造者模式

将Obj 拖拽至 框选栏 并选择

设计模式02———建造者模式 c#,设计模式,建造者模式

选择我们脚本代码中自定义的函数

设计模式02———建造者模式 c#,设计模式,建造者模式

最后将ButtonA 代码 绑定在 Main中

设计模式02———建造者模式 c#,设计模式,建造者模式

运行

点击ButtonA 按钮

设计模式02———建造者模式 c#,设计模式,建造者模式

再点消失

设计模式02———建造者模式 c#,设计模式,建造者模式

关闭选项

设计模式02———建造者模式 c#,设计模式,建造者模式

 目前已完成

如果想在建造其他组件则需要:

1.【产品类】               不动代码

2.【抽象建造类】        增加代码:

设计模式02———建造者模式 c#,设计模式,建造者模式

public abstract class IBuildCar{
    public abstract void SetCarBody();
    public abstract void SetCarWheels();
    public abstract Car GetCar();
}
3.【建造具体类】        增加代码:

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
public class BuildCarA : IBuildCar{
    //按钮计数器
    int count = 0;
    Car car;
    public BuildCarA(Car car){
        this.car = car;
    }
    public override void SetCarBody(){
        count++;
        car.CarPart = Resources.Load<GameObject>("Prefabs/CarBody");
        if(car.CarPart != null && count % 2 != 0)
            GameObject.Instantiate(car.CarPart,new Vector3(-14,1,0),new Quaternion(0,10,10,0));
    }
    public override void SetCarWheels()
    {
        count++;
        car.CarPart = Resources.Load<GameObject>("Prefabs/CarWheels");
        if (car.CarPart != null && count % 2 != 0)
            GameObject.Instantiate(car.CarPart, new Vector3(-14, 0.24f, 25.29f), Quaternion.identity);
    }
    public override Car GetCar(){
        return car;
    }
}

4.【指挥者类】      增加代码:

设计模式02———建造者模式 c#,设计模式,建造者模式

public class Director{
    public IBuildCar type;
    public Director(IBuildCar type){
        this.type = type;
    }
    public void GetCarBody() {
        type.SetCarBody();
    }
    public void GetCarWheels()
    {
        type.SetCarWheels();
    }
}

5.【控制挂载类】  增加代码:

设计模式02———建造者模式 c#,设计模式,建造者模式

using UnityEngine;
using UnityEngine.UI;
public class Main : MonoBehaviour{
    //开放Button按钮
    public Button setCarBodyButton;
    public Button setCarWheelsButton;
    //按钮计数器
    int count = 0;
    private void Start(){
        Car car = new Car();
        //里氏替换
        IBuildCar type = new BuildCarA(car);
        Director d1 = new Director(type);
        setCarBodyButton.onClick.AddListener(() => d1.GetCarBody());
        setCarWheelsButton.onClick.AddListener(() => d1.GetCarWheels());
    }
    public void DestroyCarBody(){
        if (count % 2 == 0)
            Destroy(GameObject.Find("CarBody(Clone)"));
    }
    public void DestroyCarWheels()
    {
        if (count % 2 == 0)
            Destroy(GameObject.Find("CarWheels(Clone)"));
    }
}
回到unity场景中   重复事件操作即可完成运行

设计模式02———建造者模式 c#,设计模式,建造者模式文章来源地址https://www.toymoban.com/news/detail-726389.html

到了这里,关于设计模式02———建造者模式 c#的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式——建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它允许通过分步骤来构建复杂对象。该模式的核心原理是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现形式。 在建造者模式中,通常有以下角色: 抽象建造者(Builder): 定义了创建产品

    2024年01月16日
    浏览(31)
  • 设计模式-建造者模式

    在前面几篇文章中,已经讲解了单例模式、工厂方法模式、抽象工厂模式,创建型还剩下一个比较重要的模式-建造者模式。在理解该模式之前,我还是希望重申设计模式的初衷,即 为解决一些问题而提供的优良方案 。学习设计模式遗忘其初衷,注定无法理解其真正的深刻内

    2024年02月15日
    浏览(29)
  • 【设计模式】建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 意图: 将一个复杂的构建与其表示相分

    2024年02月13日
    浏览(29)
  • 设计模式(三)建造者模式

    相关文章 设计模式系列 1.建造者模式简介 定义 建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 简介 建造者模式(builder)是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和

    2024年03月17日
    浏览(35)
  • 设计模式之建造者模式

    建造者模式(Builder Pattern) 是一种创建型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这种模式适用于需要分步骤创建复杂对象、构造过程可能需要改变、或者需要隐藏复杂对象的具体构建过程的场景。 Product(产品) :表

    2024年04月24日
    浏览(21)
  • 设计模式(9)建造者模式

    一、介绍 1、概念:将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化;建造者模式的好处就是使得建造代码与表

    2024年02月11日
    浏览(26)
  • Java设计模式-建造者模式

    建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通过将复杂对象的构建过程分解为多个简单的步骤来实现。 与其他创建型模式不同,建造者模式强调的是将构建过程与表示分离,而不是将对

    2024年02月02日
    浏览(28)
  • 设计模式—创建型模式之建造者模式

    如果我们创建的对象比较复杂,但其细节还要暴露给使用者,这样就需要用到建造者模式。 建造者设计模式, 屏蔽过程,而不屏蔽细节。 比如我们有一个手机类,定义如下: 我们想定制自己的一个手机,可以先定义一个抽象的构建者; 如果我们想定制一个 香蕉手机 ,就可

    2024年02月06日
    浏览(33)
  • 设计模式:创建者模式 - 建造者模式

    将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。不同的构建器,相同的

    2023年04月24日
    浏览(37)
  • 【设计模式】建造者模式就是游戏模式吗?

    传说女娲是用泥巴捏出人来的,当时捏出的小泥人虽然每个都是两条腿、两只手、一个脑袋的样子,但是具体到每个部位,却有有所不同:有的小泥人手长一点,有的手短一点;有的脑袋圆鼓鼓的,有的脑袋尖尖的······ 造物者归纳起来其实就一句话: 女娲造人,形态各

    2024年01月21日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包