Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text;
- using System.Threading;
- using System.Linq;
- class Program
- {
- static void Main(string[] args)
- {
- Baker bake = new Baker();
- BreadBuilder builder = new RyeBreadBuilder();
- Bread ryeBread = bake.Bake(builder);
- Console.WriteLine(ryeBread.ToString());
- builder = new WheatBreadBuilder();
- Bread wheatBread = bake.Bake(builder);
- Console.WriteLine(wheatBread.ToString());
- Console.ReadLine();
- }
- }
- abstract class BreadBuilder
- {
- public Bread Bread{get;private set;}
- public void CreateBread()
- {
- Bread = new Bread();
- }
- public abstract void SetFlour();
- public abstract void SetSalt();
- public abstract void SetAdditives();
- }
- class Baker
- {
- public Bread Bake(BreadBuilder breadBuilder)
- {
- breadBuilder.CreateBread();
- breadBuilder.SetFlour();
- breadBuilder.SetSalt();
- breadBuilder.SetAdditives();
- return breadBuilder.Bread;
- }
- }
- class RyeBreadBuilder: BreadBuilder
- {
- public override void SetFlour()
- {
- this.Bread.flour = new Flour{Sort = "Ржаная мука I сорт"};
- }
- public override void SetSalt()
- {
- this.Bread.salt = new Salt();
- }
- public override void SetAdditives()
- {
- }
- }
- class WheatBreadBuilder: BreadBuilder
- {
- public override void SetFlour()
- {
- this.Bread.flour = new Flour{Sort = "Пшеничная мука I сорт"};
- }
- public override void SetSalt()
- {
- this.Bread.salt = new Salt();
- }
- public override void SetAdditives()
- {
- this.Bread.addinives = new Additives{Name = "Улучшитель хлебопекарный"};
- }
- }
- class Flour
- {
- public string Sort{get;set;}
- }
- class Salt
- {
- }
- class Additives
- {
- public string Name{get;set;}
- }
- class Bread
- {
- public Flour flour {get;set;}
- public Salt salt {get;set;}
- public Additives addinives {get;set;}
- public override string ToString()
- {
- var sb = new StringBuilder();
- if(flour != null)
- sb.Append(flour.Sort + Environment.NewLine);
- if(salt != null)
- sb.Append("Соль" + Environment.NewLine);
- if(addinives != null)
- sb.Append(addinives.Name + Environment.NewLine);
- return sb.ToString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement