The builder pattern is used to create relatively complex, composed objects. It includes several types of roles:
- Product: The object to be created, in this case the table
- Builder: Create an abstraction of an object method, in this case Tablebuilder
- ConcreteBuilder: The implementation of a specific creation, in this case Tablebuilderimpl
- Director: Package Builder interface
The class diagram relationships are as follows:
The code is as follows:
Packagecom.example; Public classTable {PrivateString Head; PrivateString content; PrivateString footer; PublicString GetHead () {returnHead; } Public voidSethead (String head) { This. Head =Head; } PublicString getcontent () {returncontent; } Public voidsetcontent (String content) { This. Content =content; } PublicString Getfooter () {returnfooter; } Public voidsetfooter (String footer) { This. Footer =footer; } PublicString getTable () {return This. Head + "_" + This. Content + "_" + This. Footer; }}
Public Interface Tablebuilder { public tablebuilder settablehead (String head); Public tablebuilder settablecontent (String content); Public tablebuilder settablefooter (String footer); Public Table Builder ();}
Packagecom.example; Public classTablebuilderimplImplementsTablebuilder {Privatetable table; Private Static FinalString TYPE = "TYPE1"; PublicTablebuilderimpl () {table=NewTable (); } @Override PublicTablebuilder Settablehead (String head) {table.sethead (TYPE+head); return This; } @Override Publictablebuilder settablecontent (String content) {table.setcontent (TYPE+content); return This; } @Override Publictablebuilder settablefooter (String footer) {table.setfooter (TYPE+footer); return This; } @Override PublicTable Builder () {returntable; }}
Public class Director { private tablebuilder builder; Public Director (Tablebuilder builder) { this. Builder = builder; } Public Table Builder () { return builder.settablehead ("Head") . Settablecontent ( "Content") . Settablefooter ("Footer") . Builder (); }}
Public class App { publicstaticvoid main (string[] args) { new Director (new Tablebuilderimpl ()); = Direct. Builder (); System.out.println (Table.gettable ());} }
Design pattern (builder)