Technology sharing

Design Pattern Builder Pattern

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Exemplar aedificator in consilio formarum est usus communis obiecti ratio formarum creatio, quae maxime ad problemata constructionis objectum complexum solvendum adhibetur. Hic est modus aedificatoris prolixior introductio:

1. Definitio

Hic aedificator exemplar a repraesentatione obiecti complexi constructionem separat, eandem constructionem processus ad varias repraesentationes creare permittens. Aliis verbis, processus aedificationis rerum complexorum in seriem simplicium graduum destruendo laborat et utentes utentes res varias creare permittens ordinem et ambitum horum graduum definiendo.

2. Classis diagramma et compages

Classis Diagram

In artificio modo, partes sequentes solent comprehendi:

  1. Munus productum (Product): Represents a complex object being construed, usually containing multiple components.
  2. Abstract conditor: Definire interface abstractum ad varias compositiones productorum objectorum creandas.
  3. ConcreteBuilder: Exsequere conditorem instrumenti, specificas rationes creationis uniuscuiusque complexi producti comple, et interfaciem definire quae finalem productum refert.
  4. Director : Constructio responsabilis convocandi methodos in aedificatore et ecclesia componens objecta ad complendam rerum creationem complexorum. Productum specificum notitias non involvit, solum clientem ab architecto decouples.

3. Lorem missionibus

Architectus exemplaris ad sequentes missiones aptus est;

  1. Obiectum structura est complexu: Cum obiectum, quod aedificandum est, implicatam habet structuram internam et plures proprietates ac modos continet, utens forma aedificatoris faciliorem reddere potest processum aedificationis.
  2. Processus universa constructum estCum processus rei constructio plures gradus involvit, et ordo et ambitus horum graduum diversus esse potest, aedificator exemplar manifestam constructionis processum praebere potest.
  3. Decouped creatio et usus: Cum voles creaturam separare, et uti processibus obiectorum, ut users tantum curet de finali objecti repraesentatione, et non debes curare de singulis objecti creationis, exemplar est fabricator boni electio.

4. Commoda et Incommoda

commodum
  1. bonum encapsulation: Encapsulate processum constructionis complexorum intra structor.
  2. Bonum scalability: Si opus est addere novum genus aedificandi vel processum aedificandi mitigare, tantum debes addere vel mutare genus aedificatoris, quod codicem clientem non afficit.
  3. Princeps flexibilitate: Flexibilitas ad varias instantias productas creandas, mutando ordinem constructum aedificatoris seu parametri.
defectus
  1. Numerum classes: Ob necessitatem multiplices classes creandi ut architectus interfaces, artifex specifica classes, dux classes, numerus generum in systemate augeatur.
  2. Difficultas in modificatione interna: Si structura interna producti mutationes, multiplex fabricator classes mutari necesse est, sumptus conservandos augere systematis.

5. Exemplum

In hoc exemplo, aedificatori exemplo utemur ad renovationis ordinem excogitandum.Nos definiemusHouse Classes sunt complexa objectorum quae multiplicem ornamentorum componentium continent (ut laquearia, pingit, tabulata, tegulas pavimenta, etc.).Deinde definimusHouseBuilder Interface, continens methodos abstractos his componentibus creandi. Deinceps classes specificas fabricatoris constituimus pro singulis speciebus ornatu orationis (qualia sunt styli Europaei deliciae, luxus luxuriae pastoralis, minimus modernus).Denique a .Directorgenus ad edificii processum dirigendum, sed in hoc exemplo non potest esse necessarium, cum logicam perfectam aedificationem directe definire possimus in aedificatore genere.

Sed ad notionem conductoris partes demonstrandam, retinebimusDirectorclassis, sed ad usum illustrandum tantum, re vera processus aedificationis directe fieri potest in genere aedificatoris.

  1. // 房屋类
  2. public class House {
  3. private String ceiling; // 吊顶
  4. private String paint; // 涂料
  5. private String floor; // 地板
  6. private String tiles; // 地砖
  7. // 私有构造函数
  8. private House() {}
  9. // Getter 方法
  10. public String getCeiling() {
  11. return ceiling;
  12. }
  13. public String getPaint() {
  14. return paint;
  15. }
  16. public String getFloor() {
  17. return floor;
  18. }
  19. public String getTiles() {
  20. return tiles;
  21. }
  22. // 建造者接口
  23. public interface HouseBuilder {
  24. HouseBuilder buildCeiling(String ceiling);
  25. HouseBuilder buildPaint(String paint);
  26. HouseBuilder buildFloor(String floor);
  27. HouseBuilder buildTiles(String tiles);
  28. House build();
  29. }
  30. // 豪华欧式建造者 ,注意是静态内部类
  31. public static class LuxuryEuropeanBuilder implements HouseBuilder {
  32. private House house;
  33. public LuxuryEuropeanBuilder() {
  34. this.house = new House();
  35. }
  36. @Override
  37. public HouseBuilder buildCeiling(String ceiling) {
  38. house.ceiling = "豪华欧式吊顶: " + ceiling;
  39. return this;
  40. }
  41. @Override
  42. public HouseBuilder buildPaint(String paint) {
  43. house.paint = "豪华欧式涂料: " + paint;
  44. return this;
  45. }
  46. @Override
  47. public HouseBuilder buildFloor(String floor) {
  48. house.floor = "豪华欧式地板: " + floor;
  49. return this;
  50. }
  51. @Override
  52. public HouseBuilder buildTiles(String tiles) {
  53. house.tiles = "豪华欧式地砖: " + tiles;
  54. return this;
  55. }
  56. @Override
  57. public House build() {
  58. return house;
  59. }
  60. }
  61. // ... 可以为其他风格创建类似的建造者类
  62. // 指挥者类(可选,这里主要用于展示概念)
  63. public static class Director {
  64. private HouseBuilder builder;
  65. public Director(HouseBuilder builder) {
  66. this.builder = builder;
  67. }
  68. // 这里可以添加方法来指导建造过程,但在这个例子中,我们直接在建造者中完成了所有工作
  69. public House constructHouse() {
  70. // 假设这是由指挥者指导的步骤,但在这里我们直接返回建造者的结果
  71. return builder
  72. .buildCeiling("水晶吊灯")
  73. .buildPaint("金色镶边涂料")
  74. .buildFloor("大理石地板")
  75. .buildTiles("马赛克地砖")
  76. .build();
  77. }
  78. }
  79. // 主函数,用于演示
  80. public static void main(String[] args) {
  81. HouseBuilder luxuryBuilder = new LuxuryEuropeanBuilder();
  82. // Director director = new Director(luxuryBuilder); // 如果使用指挥者
  83. House house = luxuryBuilder
  84. .buildCeiling("水晶吊灯")
  85. .buildPaint("金色镶边涂料")
  86. .buildFloor("大理石地板")
  87. .buildTiles("马赛克地砖")
  88. .build();
  89. System.out.println("Ceiling: " + house.getCeiling());
  90. System.out.println("Paint: " + house.getPaint());
  91. System.out.println("Floor: " + house.getFloor());
  92. System.out.println("Tiles: " + house.getTiles());
  93. }
  94. }

Nota quod in hoc exemplo.DirectorClasses non multum pretii addunt, cum omnes logicae constructae iam encapsulae sintHouseBuilder Interface impletur. Sed in pluribus medicamentis;DirectorClasses ad ordinem et logicam processum aedificandi encapsulare possunt, praesertim cum processus plurium aedificantium spatia aedificet.

6. conclusio

Per introductionem praedictam, videre possumus aedificatorem exemplar magnas utilitates habere cum res complexa aedificando .

Si articulus hic ad studium tuum utile est, memento illum delectare et colligere.