using System.Collections.Generic;
public string Text { get; init; }
public Slide(string text)
public void AddPage(string text)
Console.WriteLine("Adding a page to pdf");
public void AddFrame(string text, int duration)
Console.WriteLine("Adding a frame to movie");
public enum PresentationFormat
public interface IPresentationBuilder
void AddSlide(Slide slide);
public class MovieBuilder : IPresentationBuilder
Movie movie = new Movie();
public void AddSlide(Slide slide)
movie.AddFrame(slide.Text, 10);
public Movie getMovie() { return movie; }
public class PdfDocumentBuilder : IPresentationBuilder
PdfDocument pdfDocument = new PdfDocument();
public void AddSlide(Slide slide)
pdfDocument.AddPage(slide.Text);
public PdfDocument GetPdfDocument() => pdfDocument;
public class Presentation
List<Slide> slides = new List<Slide>();
public void AddSlide(Slide slide)
public void Export(IPresentationBuilder builder)
foreach (var slide in slides)
public static void Main()
var presentation = new Presentation();
presentation.AddSlide(new Slide("Intro Page"));
presentation.AddSlide(new Slide("Main Page"));
presentation.AddSlide(new Slide("Summary Page"));
var builder = new MovieBuilder();
presentation.Export(builder);
var builder2 = new PdfDocumentBuilder();
presentation.Export(builder2);
builder2.GetPdfDocument();