2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
डिजाइन-प्रतिमानयोः Builder Pattern इति सामान्यतया प्रयुक्तः वस्तुनिर्माण-डिजाइन-प्रतिरूपः अस्ति, यस्य उपयोगः मुख्यतया जटिल-वस्तुनिर्माण-समस्यानां समाधानार्थं भवति । अत्र builder mode इत्यस्य विस्तृतः परिचयः अस्ति ।
निर्माता प्रतिमानं जटिलवस्तुनः निर्माणं तस्य प्रतिनिधित्वात् पृथक् करोति, येन समाननिर्माणप्रक्रिया भिन्नप्रतिपादनानि निर्मातुं शक्नोति । अन्येषु शब्देषु, जटिलवस्तूनाम् निर्माणप्रक्रियाम् सरलपदमालायां विभज्य एतेषां पदानां क्रमं मापदण्डं च निर्दिश्य उपयोक्तृभ्यः भिन्नानि वस्तूनि निर्मातुं अनुमतिं दत्त्वा कार्यं करोति
कक्षा आरेख
बिल्डर् मोड् मध्ये प्रायः निम्नलिखित भूमिकाः समाविष्टाः भवन्ति ।
निर्माता प्रतिमानं निम्नलिखितपरिदृश्यानां कृते उपयुक्तम् अस्ति:
निम्नलिखित उदाहरणे वयं गृहस्य नवीनीकरणप्रणालीं डिजाइनं कर्तुं Builder pattern इत्यस्य उपयोगं करिष्यामः ।वयं क इति परिभाषयिष्यामःHouse
वर्गाः जटिलवस्तूनि सन्ति येषु बहुविधाः अलङ्कारघटकाः (यथा छत, रङ्गः, तलः, तलस्य टाइल् इत्यादयः) सन्ति ।ततः, वयं क परिभाषयामःHouseBuilder
एतेषां घटकानां निर्माणार्थं अमूर्तविधयः समाविष्टाः अन्तरफलकम् । तदनन्तरं, वयं प्रत्येकस्य विशिष्टस्य अलङ्कारशैल्याः कृते विशिष्टानि निर्मातावर्गाणि निर्मामः (यथा विलासिता यूरोपीयशैली, हल्की विलासिता गोपालनात्मकः, आधुनिकः न्यूनतमः)।अन्ते वयं कDirector
class इति निर्माणप्रक्रियायाः मार्गदर्शनाय, परन्तु अस्मिन् उदाहरणे एतत् आवश्यकं न भवेत् यतः वयं builder class मध्ये प्रत्यक्षतया सम्पूर्णं building logic परिभाषितुं शक्नुमः ।
तथापि चालकभूमिकायाः अवधारणां प्रदर्शयितुं वयं कDirector
class, परन्तु केवलं दृष्टान्तार्थं, वस्तुतः निर्माणप्रक्रिया प्रत्यक्षतया निर्मातावर्गे कर्तुं शक्यते ।
- // 房屋类
- public class House {
- private String ceiling; // 吊顶
- private String paint; // 涂料
- private String floor; // 地板
- private String tiles; // 地砖
-
- // 私有构造函数
- private House() {}
-
- // Getter 方法
- public String getCeiling() {
- return ceiling;
- }
-
- public String getPaint() {
- return paint;
- }
-
- public String getFloor() {
- return floor;
- }
-
- public String getTiles() {
- return tiles;
- }
-
- // 建造者接口
- public interface HouseBuilder {
- HouseBuilder buildCeiling(String ceiling);
- HouseBuilder buildPaint(String paint);
- HouseBuilder buildFloor(String floor);
- HouseBuilder buildTiles(String tiles);
- House build();
- }
-
- // 豪华欧式建造者 ,注意是静态内部类
- public static class LuxuryEuropeanBuilder implements HouseBuilder {
- private House house;
-
- public LuxuryEuropeanBuilder() {
- this.house = new House();
- }
-
- @Override
- public HouseBuilder buildCeiling(String ceiling) {
- house.ceiling = "豪华欧式吊顶: " + ceiling;
- return this;
- }
-
- @Override
- public HouseBuilder buildPaint(String paint) {
- house.paint = "豪华欧式涂料: " + paint;
- return this;
- }
-
- @Override
- public HouseBuilder buildFloor(String floor) {
- house.floor = "豪华欧式地板: " + floor;
- return this;
- }
-
- @Override
- public HouseBuilder buildTiles(String tiles) {
- house.tiles = "豪华欧式地砖: " + tiles;
- return this;
- }
-
- @Override
- public House build() {
- return house;
- }
- }
-
- // ... 可以为其他风格创建类似的建造者类
-
- // 指挥者类(可选,这里主要用于展示概念)
- public static class Director {
- private HouseBuilder builder;
-
- public Director(HouseBuilder builder) {
- this.builder = builder;
- }
-
- // 这里可以添加方法来指导建造过程,但在这个例子中,我们直接在建造者中完成了所有工作
- public House constructHouse() {
- // 假设这是由指挥者指导的步骤,但在这里我们直接返回建造者的结果
- return builder
- .buildCeiling("水晶吊灯")
- .buildPaint("金色镶边涂料")
- .buildFloor("大理石地板")
- .buildTiles("马赛克地砖")
- .build();
- }
- }
-
- // 主函数,用于演示
- public static void main(String[] args) {
- HouseBuilder luxuryBuilder = new LuxuryEuropeanBuilder();
- // Director director = new Director(luxuryBuilder); // 如果使用指挥者
-
- House house = luxuryBuilder
- .buildCeiling("水晶吊灯")
- .buildPaint("金色镶边涂料")
- .buildFloor("大理石地板")
- .buildTiles("马赛克地砖")
- .build();
-
- System.out.println("Ceiling: " + house.getCeiling());
- System.out.println("Paint: " + house.getPaint());
- System.out.println("Floor: " + house.getFloor());
- System.out.println("Tiles: " + house.getTiles());
- }
- }
कृपया ज्ञातव्यं यत् अस्मिन् उदाहरणेDirector
वर्गाः वस्तुतः बहु मूल्यं न योजयन्ति यतः सर्वाणि build logic पूर्वमेव encapsulated अस्तिHouseBuilder
अन्तरफलकं कार्यान्वितम् अस्ति । परन्तु अधिकजटिलप्रयोगेषु .Director
वर्गानां उपयोगः निर्माणप्रक्रियायाः क्रमं तर्कं च समाहितं कर्तुं शक्यते, विशेषतः यदा निर्माणप्रक्रिया बहुविधनिर्माणकर्तृभ्यः व्याप्ता भवति ।
उपर्युक्तपरिचयस्य माध्यमेन द्रष्टुं शक्यते यत् जटिलवस्तूनाम् निर्माणकाले निर्मातृप्रतिमानस्य महत् लाभं भवति यत् एतत् निर्माणप्रक्रियायाः प्रतिनिधित्वात् पृथक् कृत्वा कोडस्य एन्कैप्सुलेशनं, मापनीयतां च सुधरयति, तथा च ग्राहकस्य विशिष्टस्य च मध्ये संचारं न्यूनीकरोति उत्पादः मध्ये युग्मनस्य डिग्री।
यदि एषः लेखः भवतः अध्ययनाय सहायकः अस्ति तर्हि कृपया तत् पसन्दं कृत्वा संग्रहीतुं स्मर्यताम्।