Java construction design mode

xiaoxiao2021-03-06  33

Divided into instructor, abstract builder, with a specific builder has an example

Import java.util. *; import junit.framework. *;

// Different media forms:

Class Media Extends ArrayList {} Class Book Extends Media {} Class Magazine Extends Media {} Class Website Extensity Media {}

// Composition element of different media:

Class MediaItem {Private String S; PUBLIC MediaItem (String S) {this.s = s;} public string toString () {Return S;}}

Class Chapter Extends MediaITEM {public chapter (string s) {super (s);}}

Class Article Extends MediaItem {public article (string s) {super (s);}}

Class WebItem Extends MediaITEM {public WebItem (String S) {Super (s);}}

// Abstract builder role, which specifies the steps of all media construction:

Class MediaBuilder {public void buildbase () {} public void address {} public Media getfinishedmedia () {return null;}}}

// Specific builder role

Class Bookbuilder Extends MediaBuilder {Private Book B; Public Void Buildbase () {System.out.Println ("Building Book Framework"); b = new book ();}

Public void addmediaitem (MediaItem chapter) {system.out.println ("adding chapter"; b.add (chapter);} public Media getfinishedMedia () {return b;}}

Class MagazineBuilder Extends MediaBuilder {Private Magazine M; Public Void Buildbase () {System.out.Println ("Building Magazine Framework); M = New Magazine ();

Public void addmediaitem (MediaItem Article) {system.out.println ("Adding article"; m.add (article);} public media getfinishedmedia () {return m;}}

Class WebsiteBuilder Extends MediaBuilder {Private Website W; Public Void Buildbase () {System.out.Println ("Building Web Site Framework"); w = new Website ();

Public void addmediaitem (MediaItem WebItem) {system.out.println ("Adding Web Item"; w.add (webitem);} public media getfinishedmedia () {return w;}}

/ / The instructor role, also called context class MediaDirector {Private MediaBuilder MB; Public MediaDirector (MediaBuilder MB) {this.mb = mb; // has a strategy mode Similar feature}

Public Media ProduceMedia (List INPUT) {Mb.Buildbase (); for (Iterator IT = INPUT.ITERATOR (); it.hasnext ();) Mb.addmediaITEM ((MediaItem) IT.Next ()); return mb.GetFinishedMedia ()}};

// Test Program - Customer Role

public class BuildMedia extends TestCase {private List input = Arrays.asList (new MediaItem [] {new MediaItem ( "item1"), new MediaItem ( "item2"), new MediaItem ( "item3"), new MediaItem ( "item4") ,});

public void testBook () {MediaDirector buildBook = new MediaDirector (new BookBuilder ()); Media book = buildBook.produceMedia (input); String result = "book:" book; System.out.println (result); assertEquals (result , "Book: [Item1, Item2, Item3, Item4]");

Public void testmagazine () {MediaDirector Buildmagazine = New MediaDirector (New

MagazineBuilder ()); Media magazine = buildMagazine.produceMedia (input); String result = "magazine:" magazine; System.out.println (result); assertEquals (result, "magazine: [item1, item2, item3, item4] ");

Public void testwebsite () {MediaDirector buildingWebsite = new MediaDirector (New

WebSiteBuilder ()); Media webSite = buildWebSite.produceMedia (input); String result = "web site:" webSite; System.out.println (result); assertEquals (result, "web site: [item1, item2, item3, Item4] ");

Public static void main (string [] args) {junit.textui.teestrunner.run (buildmedia.class);}}

转载请注明原文地址:https://www.9cbs.com/read-62641.html

New Post(0)