标签:bst ogr 演示 表示 ide main lin art override
建造者模式又称生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式主要用于创建一些复杂的对象,这些对象内部构构建间的构造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。
建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。
产品类:Product
Product是具体的产品角色,由多个部件组成
class Product{ IList<string> parts = new List<string>(); public void Add(string part) => parts.Add(part); public void Show(){ Console.WriteLine("产品创建"); foreach (string part in parts) Console.WriteLine(part); } }
建造者抽象类:Builder
是建造一个产品的各个部分的抽象类,规定实现一个产品必须要实现的部分。由确定产品的两个部件PartA和PartB组成,并声明一个得到产品建造后结果的方法GetResult。
abstract class Builder{ public abstract void BuilderPartA(); public abstract void BuilderPartB(); public abstract Product GetResult(); }
具体建造者类:ConcreteBuilder
具体建造者类是对抽象的具体实现,基于同样要求实现的方法实现不同的内容,建造两个具体的部件。
class ConcreteBuilderA : Builder{ private Product product = new Product(); public override void BuilderPartA() => product.Add("部件A"); public override void BuilderPartB() => product.Add("部件B"); public override Product GetResult() => product; } class ConcreteBuilderB : Builder{ private Product product = new Product(); public override void BuilderPartA() => product.Add("部件X"); public override void BuilderPartB() => product.Add("部件Y"); public override Product GetResult() => product; }
指挥者类:Director
指挥者类根据用户的需求来创建产品。其中指挥建造过程。
class Director{ public void Construct(Builder builder){ builder.BuilderPartA(); builder.BuilderPartB(); } }
测试类:Program
客户端不需要知道具体的建造过程。
//Main方法 Director director = new Director(); Builder b1 = new ConcreteBuilderA(); Builder b2 = new ConcreteBuilderB(); director.Construct(b1); Product p1 = b1.GetResult(); p1.Show(); director.Construct(b2); Product p2 = b2.GetResult(); p2.Show(); //测试结果 产品创建 部件A 部件B 产品创建 部件X 部件Y
标签:bst ogr 演示 表示 ide main lin art override
原文地址:https://www.cnblogs.com/errornull/p/10053607.html