<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDesign_Pattern%2FBuilder_Pattern</id>
		<title>Java Tutorial/Design Pattern/Builder Pattern - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FDesign_Pattern%2FBuilder_Pattern"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Design_Pattern/Builder_Pattern&amp;action=history"/>
		<updated>2026-04-10T21:03:19Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Design_Pattern/Builder_Pattern&amp;diff=4474&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Design_Pattern/Builder_Pattern&amp;diff=4474&amp;oldid=prev"/>
				<updated>2010-06-01T05:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:02, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Design_Pattern/Builder_Pattern&amp;diff=4473&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Design_Pattern/Builder_Pattern&amp;diff=4473&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Builder pattern: build a house ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public class BuilderDemo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    HouseBuilder builder = new SimpleHouseBuilder();&lt;br /&gt;
    HouseBuildingCompany houseBuildingCompany = new HouseBuildingCompany();&lt;br /&gt;
    House house = houseBuildingCompany.build(builder);&lt;br /&gt;
    System.out.println(house);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface HouseBuilder {&lt;br /&gt;
  void buildBasement();&lt;br /&gt;
  void buildWalls();&lt;br /&gt;
  void buildRoof();&lt;br /&gt;
  House getHouse();&lt;br /&gt;
}&lt;br /&gt;
class HouseBuildingCompany {&lt;br /&gt;
  public House build(HouseBuilder builder) {&lt;br /&gt;
    builder.buildBasement();&lt;br /&gt;
    builder.buildWalls();&lt;br /&gt;
    builder.buildRoof();&lt;br /&gt;
    return builder.getHouse();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SimpleHouseBuilder implements HouseBuilder {&lt;br /&gt;
  private House house;&lt;br /&gt;
  public SimpleHouseBuilder() {&lt;br /&gt;
    this.house = new House();&lt;br /&gt;
  }&lt;br /&gt;
  public void buildBasement() {&lt;br /&gt;
    this.house.setBasement(new Basement());&lt;br /&gt;
  }&lt;br /&gt;
  public void buildWalls() {&lt;br /&gt;
    for (int i = 0; i &amp;lt; 4; i++)&lt;br /&gt;
      this.house.addWall(new Wall());&lt;br /&gt;
  }&lt;br /&gt;
  public void buildRoof() {&lt;br /&gt;
    this.house.setRoot(new Roof());&lt;br /&gt;
  }&lt;br /&gt;
  public House getHouse() {&lt;br /&gt;
    return this.house;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Basement {&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Basement&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Wall {&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Wall&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Roof {&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;Roof&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class House {&lt;br /&gt;
  private Basement basement;&lt;br /&gt;
  private List&amp;lt;Wall&amp;gt; walls;&lt;br /&gt;
  private Roof roof;&lt;br /&gt;
  public House() {&lt;br /&gt;
    this.walls = new LinkedList&amp;lt;Wall&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
  public void addWall(Wall wall) {&lt;br /&gt;
    this.walls.add(wall);&lt;br /&gt;
  }&lt;br /&gt;
  public void setRoot(Roof roof) {&lt;br /&gt;
    this.roof = roof;&lt;br /&gt;
  }&lt;br /&gt;
  public void setBasement(Basement basement) {&lt;br /&gt;
    this.basement = basement;&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;House {&amp;quot; + this.basement + &amp;quot;, &amp;quot; + this.walls + &amp;quot;, &amp;quot; + this.roof + &amp;quot;}&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Builder pattern with interface ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
public class TestRobotBuilder {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Machine builder;&lt;br /&gt;
    RobotBuildable robot;&lt;br /&gt;
    String response = &amp;quot;a&amp;quot;;&lt;br /&gt;
    builder = new Cooker();&lt;br /&gt;
    // builder = new AutomotiveRobotBuilder();&lt;br /&gt;
    // Start the construction process.&lt;br /&gt;
    builder.addStart();&lt;br /&gt;
    builder.addTest();&lt;br /&gt;
    builder.addAssemble();&lt;br /&gt;
    builder.addStop();&lt;br /&gt;
    robot = builder.getRobot();&lt;br /&gt;
    robot.go();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface Machine {&lt;br /&gt;
  public void addStart();&lt;br /&gt;
  public void addGetParts();&lt;br /&gt;
  public void addAssemble();&lt;br /&gt;
  public void addTest();&lt;br /&gt;
  public void addStop();&lt;br /&gt;
  public RobotBuildable getRobot();&lt;br /&gt;
}&lt;br /&gt;
interface RobotBuildable {&lt;br /&gt;
  public void go();&lt;br /&gt;
}&lt;br /&gt;
class Cooker implements Machine {&lt;br /&gt;
  CookerBuildable robot;&lt;br /&gt;
  ArrayList&amp;lt;Integer&amp;gt; actions;&lt;br /&gt;
  public Cooker() {&lt;br /&gt;
    robot = new CookerBuildable();&lt;br /&gt;
    actions = new ArrayList&amp;lt;Integer&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
  public void addStart() {&lt;br /&gt;
    actions.add(new Integer(1));&lt;br /&gt;
  }&lt;br /&gt;
  public void addGetParts() {&lt;br /&gt;
    actions.add(new Integer(2));&lt;br /&gt;
  }&lt;br /&gt;
  public void addAssemble() {&lt;br /&gt;
    actions.add(new Integer(3));&lt;br /&gt;
  }&lt;br /&gt;
  public void addTest() {&lt;br /&gt;
    actions.add(new Integer(4));&lt;br /&gt;
  }&lt;br /&gt;
  public void addStop() {&lt;br /&gt;
    actions.add(new Integer(5));&lt;br /&gt;
  }&lt;br /&gt;
  public RobotBuildable getRobot() {&lt;br /&gt;
    robot.loadActions(actions);&lt;br /&gt;
    return robot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Car implements Machine {&lt;br /&gt;
  CarBuildable robot;&lt;br /&gt;
  ArrayList&amp;lt;Integer&amp;gt; actions;&lt;br /&gt;
  public Car() {&lt;br /&gt;
    robot = new CarBuildable();&lt;br /&gt;
    actions = new ArrayList&amp;lt;Integer&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
  public void addStart() {&lt;br /&gt;
    actions.add(new Integer(1));&lt;br /&gt;
  }&lt;br /&gt;
  public void addGetParts() {&lt;br /&gt;
    actions.add(new Integer(2));&lt;br /&gt;
  }&lt;br /&gt;
  public void addAssemble() {&lt;br /&gt;
    actions.add(new Integer(3));&lt;br /&gt;
  }&lt;br /&gt;
  public void addTest() {&lt;br /&gt;
    actions.add(new Integer(4));&lt;br /&gt;
  }&lt;br /&gt;
  public void addStop() {&lt;br /&gt;
    actions.add(new Integer(5));&lt;br /&gt;
  }&lt;br /&gt;
  public RobotBuildable getRobot() {&lt;br /&gt;
    robot.loadActions(actions);&lt;br /&gt;
    return robot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CookerBuildable implements RobotBuildable {&lt;br /&gt;
  ArrayList&amp;lt;Integer&amp;gt; actions;&lt;br /&gt;
  public CookerBuildable() {&lt;br /&gt;
  }&lt;br /&gt;
  public final void go() {&lt;br /&gt;
    Iterator itr = actions.iterator();&lt;br /&gt;
    while (itr.hasNext()) {&lt;br /&gt;
      switch ((Integer) itr.next()) {&lt;br /&gt;
      case 1:&lt;br /&gt;
        start();&lt;br /&gt;
        break;&lt;br /&gt;
      case 2:&lt;br /&gt;
        getParts();&lt;br /&gt;
        break;&lt;br /&gt;
      case 3:&lt;br /&gt;
        assemble();&lt;br /&gt;
        break;&lt;br /&gt;
      case 4:&lt;br /&gt;
        test();&lt;br /&gt;
        break;&lt;br /&gt;
      case 5:&lt;br /&gt;
        stop();&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void start() {&lt;br /&gt;
    System.out.println(&amp;quot;Starting....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void getParts() {&lt;br /&gt;
    System.out.println(&amp;quot;Getting flour and sugar....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void assemble() {&lt;br /&gt;
    System.out.println(&amp;quot;Baking a cookie....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void test() {&lt;br /&gt;
    System.out.println(&amp;quot;Crunching a cookie....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void stop() {&lt;br /&gt;
    System.out.println(&amp;quot;Stopping....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void loadActions(ArrayList&amp;lt;Integer&amp;gt; a) {&lt;br /&gt;
    actions = a;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class CarBuildable implements RobotBuildable {&lt;br /&gt;
  ArrayList&amp;lt;Integer&amp;gt; actions;&lt;br /&gt;
  public CarBuildable() {&lt;br /&gt;
  }&lt;br /&gt;
  public final void go() {&lt;br /&gt;
    Iterator itr = actions.iterator();&lt;br /&gt;
    while (itr.hasNext()) {&lt;br /&gt;
      switch ((Integer) itr.next()) {&lt;br /&gt;
      case 1:&lt;br /&gt;
        start();&lt;br /&gt;
        break;&lt;br /&gt;
      case 2:&lt;br /&gt;
        getParts();&lt;br /&gt;
        break;&lt;br /&gt;
      case 3:&lt;br /&gt;
        assemble();&lt;br /&gt;
        break;&lt;br /&gt;
      case 4:&lt;br /&gt;
        test();&lt;br /&gt;
        break;&lt;br /&gt;
      case 5:&lt;br /&gt;
        stop();&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void start() {&lt;br /&gt;
    System.out.println(&amp;quot;Starting....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void getParts() {&lt;br /&gt;
    System.out.println(&amp;quot;Getting a carburetor....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void assemble() {&lt;br /&gt;
    System.out.println(&amp;quot;Installing the carburetor....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void test() {&lt;br /&gt;
    System.out.println(&amp;quot;Revving the engine....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void stop() {&lt;br /&gt;
    System.out.println(&amp;quot;Stopping....&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void loadActions(ArrayList&amp;lt;Integer&amp;gt; a) {&lt;br /&gt;
    actions = a;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Example of the Builder pattern ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
class Office extends ArrayList&amp;lt;OfficeUnit&amp;gt; {&lt;br /&gt;
}&lt;br /&gt;
class Word extends Office {&lt;br /&gt;
}&lt;br /&gt;
class PPT extends Office {&lt;br /&gt;
}&lt;br /&gt;
class Excel extends Office {&lt;br /&gt;
}&lt;br /&gt;
class OfficeUnit {&lt;br /&gt;
  private String s;&lt;br /&gt;
  public OfficeUnit(String s) {&lt;br /&gt;
    this.s = s;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return s;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class DocumentPage extends OfficeUnit {&lt;br /&gt;
  public DocumentPage(String s) {&lt;br /&gt;
    super(s);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class PPTSlide extends OfficeUnit {&lt;br /&gt;
  public PPTSlide(String s) {&lt;br /&gt;
    super(s);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ExcelWorkbook extends OfficeUnit {&lt;br /&gt;
  public ExcelWorkbook(String s) {&lt;br /&gt;
    super(s);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class OfficeBuilder {&lt;br /&gt;
  public void buildBase() {&lt;br /&gt;
  }&lt;br /&gt;
  public void addOfficeUnit(OfficeUnit item) {&lt;br /&gt;
  }&lt;br /&gt;
  public Office getFinishedMedia() {&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class WordBuilder extends OfficeBuilder {&lt;br /&gt;
  private Word b;&lt;br /&gt;
  public void buildBase() {&lt;br /&gt;
    System.out.println(&amp;quot;Building word framework&amp;quot;);&lt;br /&gt;
    b = new Word();&lt;br /&gt;
  }&lt;br /&gt;
  public void addOfficeUnit(OfficeUnit chapter) {&lt;br /&gt;
    System.out.println(&amp;quot;Adding word page &amp;quot; + chapter);&lt;br /&gt;
    b.add(chapter);&lt;br /&gt;
  }&lt;br /&gt;
  public Office getFinishedMedia() {&lt;br /&gt;
    return b;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class PPTBuilder extends OfficeBuilder {&lt;br /&gt;
  private PPT m;&lt;br /&gt;
  public void buildBase() {&lt;br /&gt;
    System.out.println(&amp;quot;Building PPT&amp;quot;);&lt;br /&gt;
    m = new PPT();&lt;br /&gt;
  }&lt;br /&gt;
  public void addOfficeUnit(OfficeUnit article) {&lt;br /&gt;
    System.out.println(&amp;quot;Adding slide&amp;quot; + article);&lt;br /&gt;
    m.add(article);&lt;br /&gt;
  }&lt;br /&gt;
  public Office getFinishedMedia() {&lt;br /&gt;
    return m;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ExcelBuilder extends OfficeBuilder {&lt;br /&gt;
  private Excel w;&lt;br /&gt;
  public void buildBase() {&lt;br /&gt;
    System.out.println(&amp;quot;Building Excel&amp;quot;);&lt;br /&gt;
    w = new Excel();&lt;br /&gt;
  }&lt;br /&gt;
  public void addOfficeUnit(OfficeUnit webItem) {&lt;br /&gt;
    System.out.println(&amp;quot;Adding workbook&amp;quot; + webItem);&lt;br /&gt;
    w.add(webItem);&lt;br /&gt;
  }&lt;br /&gt;
  public Office getFinishedMedia() {&lt;br /&gt;
    return w;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class OfficeDirector {&lt;br /&gt;
  private OfficeBuilder mb;&lt;br /&gt;
  public OfficeDirector(OfficeBuilder mb) {&lt;br /&gt;
    this.mb = mb; &lt;br /&gt;
  }&lt;br /&gt;
  public Office produceMedia(List input) {&lt;br /&gt;
    mb.buildBase();&lt;br /&gt;
    for (Iterator it = input.iterator(); it.hasNext();)&lt;br /&gt;
      mb.addOfficeUnit((OfficeUnit) it.next());&lt;br /&gt;
    return mb.getFinishedMedia();&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
public class BuildOfficeDemo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    List input = Arrays.asList(new OfficeUnit[] { new OfficeUnit(&amp;quot;item1&amp;quot;), new OfficeUnit(&amp;quot;item2&amp;quot;),&lt;br /&gt;
        new OfficeUnit(&amp;quot;item3&amp;quot;), new OfficeUnit(&amp;quot;item4&amp;quot;), });&lt;br /&gt;
    OfficeDirector buildBook = new OfficeDirector(new WordBuilder());&lt;br /&gt;
    Office word = buildBook.produceMedia(input);&lt;br /&gt;
    String result = &amp;quot;word: &amp;quot; + word;&lt;br /&gt;
    System.out.println(result);&lt;br /&gt;
    OfficeDirector buildMagazine = new OfficeDirector(new PPTBuilder());&lt;br /&gt;
    Office ppt = buildMagazine.produceMedia(input);&lt;br /&gt;
    result = &amp;quot;PPT: &amp;quot; + ppt;&lt;br /&gt;
    System.out.println(result);&lt;br /&gt;
    OfficeDirector buildWebSite = new OfficeDirector(new ExcelBuilder());&lt;br /&gt;
    Office excel = buildWebSite.produceMedia(input);&lt;br /&gt;
    result = &amp;quot;Excel: &amp;quot; + excel;&lt;br /&gt;
    System.out.println(result);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>