• c# 24种设计模式4建造者模式(Builder)


    先来一个例子

    建造者接口
     public interface IBuilder
        {
            void CreateLogo();
            void CreateBody();
            void CreateWheel();
            void CreateChair();
        }

    宝马和大奔子类继承

      public class Benz : IBuilder
        {
            public void CreateLogo()
            {
                Console.WriteLine("创建奔驰的logo");
            }
            public void CreateBody()
            {
                Console.WriteLine("创建奔驰的身体");
            }
            public void CreateWheel()
            {
                Console.WriteLine("创建奔驰的轮子");
            }
            public void CreateChair()
            {
                Console.WriteLine("创建奔驰的椅子");
            }
        }
     public class BMW : IBuilder
        {
            public void CreateLogo()
            {
                Console.WriteLine("创建宝马的logo");
            }
            public void CreateBody()
            {
                Console.WriteLine("创建宝马的身体");
            }
            public void CreateWheel()
            {
                Console.WriteLine("创建宝马的轮子");
            }
            public void CreateChair()
            {
                Console.WriteLine("创建宝马的椅子");
            }
        }

    Director 主管

      public class Director1
        {
            public void Constructor(IBuilder builder)
            {
                builder.CreateLogo();
                builder.CreateBody();
                builder.CreateWheel();
                builder.CreateChair();
            }
        }

    Main 客户端

     static void Main(string[] args)
            {
                Director1 director = new Director1();
    
                director.Constructor(new Benz());
    
                director.Constructor(new BMW());
    
                Console.ReadLine();
            }

     建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    建造者模式包含如下角色:
    Builder:抽象建造者
    ConcreteBuilder:具体建造者
    Director:指挥者
    Product:产品角色

    建造者模式的结构中还引入了一个指挥者类Director,该类的作用主要有两个:
    一、它隔离客户与生产过程;
    二、它负责控制产品的生成过程。指挥者针对抽象建造者编程,客户端只需要知道具体建造者的类型,无须关心产品对象的具体组装过程,即可通过指挥者类调用建造者的相关方法,返回一个完整的产品对象。

  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/8880719.html
Copyright © 2020-2023  润新知