Last active
July 21, 2017 07:31
Star
You must be signed in to star a gist
【Design Patterns】Decorator 實作與應用
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public Document PrintWord2(IList<AttachmentModel> attachments){ | |
// 「封面一」 + 「空白頁」 | |
MeetingMinutesWordPrinter cover1 = new MinutesCoverDocumentPrinter("(附件一)"); // 產生「封面一」的文件 | |
MeetingMinutesWordPrinter conver1WithWhitePage = new WhitePageDecorator(cover1); // 將「封面一」文件後面加入「空白頁」 | |
// 「附件」 + 「區塊」 + 「頁碼」 | |
MeetingMinutesWordPrinter attachment = new MinutesAttachmentPrinter(attachments); // 產生「附件」的文件 | |
MeetingMinutesWordPrinter attachmentWithPageNumber = new PageNumberDecorator(new NewSectionDecorator(attachment)); // 將「附件」文件區域加入「頁碼」顯示 | |
// 「封面二」 + 「區塊」 | |
MeetingMinutesWordPrinter cover2 = new MinutesCoverDocumentPrinter("(附件二)"); // 產生「封面二」的文件 | |
MeetingMinutesWordPrinter cover2WithNewSection = new NewSectionDecorator(cover2); // 指定「封面二」區塊為獨立區塊,否則會被上面「頁碼」影響 | |
// 「封面一」 + 「空白頁」 + 「附件」 + 「封面二」 => 「合併」 => 最終文件 | |
MeetingMinutesWordPrinter resultWord = | |
new MergeDecorator(new MergeDecorator(conver1WithWhitePage , attachmentWithPageNumber) , cover2WithNewSection); // 將上面準備好的文件區塊「合併」成為一個最終文件 | |
return resultWord.PrintDocument(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment