{"id":37214,"date":"2023-06-13T22:55:40","date_gmt":"2023-06-13T13:55:40","guid":{"rendered":"https:\/\/m9js.shop\/blog\/?p=37214"},"modified":"2023-06-13T22:55:40","modified_gmt":"2023-06-13T13:55:40","slug":"java-builder-design-pattern-how-to-step-by-step-the-creation-of-complex-objects","status":"publish","type":"post","link":"https:\/\/m9js.shop\/blog\/development\/java-builder-design-pattern-how-to-step-by-step-the-creation-of-complex-objects","title":{"rendered":"\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134: \ubcf5\uc7a1\ud55c \uac1d\uccb4 \uc0dd\uc131\uc744 \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ub294 \ubc29\ubc95"},"content":{"rendered":"

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134 \uc18c\uac1c<\/h1>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \ubcf5\uc7a1\ud55c \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\ub294 \uacbd\uc6b0, \uc0dd\uc131\uc790\uc5d0 \ub9ce\uc740 \uc778\uc790\ub97c \uc804\ub2ec\ud558\ub294 \uac83\uc740 \ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uc744 \ub5a8\uc5b4\ub728\ub9ac\uace0 \uc624\ub958\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\uae30 \uc27d\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131\uc758 \ubcf5\uc7a1\uc131\uc744 \uc904\uc774\uace0, \uc720\uc9c0\ubcf4\uc218\uc131\uacfc \uac00\ub3c5\uc131\uc744 \uc99d\uac00\uc2dc\ud0a4\ub294 \ub370 \ud070 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \uc774 \uae30\uc220\uc740 \ub9ce\uc740 \uc790\ubc14 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc6a9\ub418\uace0 \uc788\uc73c\uba70, \ub9ce\uc740 \uac1c\ubc1c\uc790\ub4e4\uc774 \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc744 \ud559\uc2b5\ud558\uace0 \ud65c\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n

\"Java<\/p>\n

\ubcf5\uc7a1\ud55c \uac1d\uccb4 \uc0dd\uc131\uacfc \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4<\/h1>\n

\ubcf5\uc7a1\ud55c \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\ub294 \uacbd\uc6b0, \uc0dd\uc131\uc790\uc5d0 \ub9ce\uc740 \uc778\uc790\ub97c \uc804\ub2ec\ud558\ub294 \uac83\uc740 \ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uc744 \ub5a8\uc5b4\ub728\ub9ac\uace0 \uc624\ub958\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\uae30 \uc27d\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n

\ube4c\ub4dc \ud504\ub85c\uc138\uc2a4\ub294 \ubcf4\ud1b5 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uac1c\ubc1c\uc790\ub294 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654 \uacfc\uc815\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ub2e4\uc591\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uac1d\uccb4 \uc0dd\uc131 \uacfc\uc815\uc5d0\uc11c \ud544\uc694\ud55c \uc778\uc790\ub97c \ub204\ub77d\ud558\ub294 \uacbd\uc6b0, \ub7f0\ud0c0\uc784 \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ubc29\uc9c0\ud558\uae30 \uc704\ud574 \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4\ub294 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n

\"Complex<\/p>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc758 \uad6c\uc131 \uc694\uc18c<\/h1>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc758 \uad6c\uc131 \uc694\uc18c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n

1. Director<\/h2>\n

Director\ub294 \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4\ub97c \uad00\ub9ac\ud569\ub2c8\ub2e4. Director\ub294 \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4\uc758 \uac01 \ub2e8\uacc4\ub97c \ud638\ucd9c\ud558\uace0, \ube4c\ub4dc \ud504\ub85c\uc138\uc2a4\uac00 \uc62c\ubc14\ub85c \uc2e4\ud589\ub418\ub3c4\ub85d \ubcf4\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n

2. Builder<\/h2>\n

Builder\ub294 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2f4\ub2f9\ud569\ub2c8\ub2e4. Builder\ub294 Director\uc5d0 \uc758\ud574 \ud638\ucd9c\ub418\uba70, \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2f4\ub2f9\ud569\ub2c8\ub2e4.<\/p>\n

3. Product<\/h2>\n

Product\ub294 \ube4c\ub4dc\ub41c \uac1d\uccb4\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4. Product\ub294 Builder\uac00 \uc0dd\uc131\ud558\ub294 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/p>\n

\"Java<\/p>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc758 \uc7a5\ub2e8\uc810\uacfc \ud65c\uc6a9 \uc608\uc2dc<\/h1>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n

1. \uac00\ub3c5\uc131<\/h2>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ubbc0\ub85c, \ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4.<\/p>\n

2. \uc720\uc9c0\ubcf4\uc218\uc131<\/h2>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ubbc0\ub85c, \uc720\uc9c0\ubcf4\uc218\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654 \uacfc\uc815\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ubb38\uc81c\ub97c \uc2dd\ubcc4\ud558\uace0 \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n

3. \uc720\uc5f0\uc131<\/h2>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ubbc0\ub85c, \uc720\uc5f0\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc740 \ub2e4\uc591\ud55c \uac1d\uccb4 \uc720\ud615\uc744 \uc0dd\uc131\ud558\uace0 \ucd08\uae30\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n

4. \uc7ac\uc0ac\uc6a9\uc131<\/h2>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ubbc0\ub85c, \uc7ac\uc0ac\uc6a9\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc740 \ub2e4\ub978 \uac1d\uccb4\uc5d0\uc11c\ub3c4 \uc0ac\uc6a9\ub420 \uc218 \uc788\uc73c\ubbc0\ub85c, \uac1c\ubc1c\uc790\ub294 \ucf54\ub4dc\ub97c \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \ub2e4\uc591\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub9ce\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 \ub9ce\uc740 \uac1d\uccb4\ub97c \uc0dd\uc131\ud574\uc57c \ud558\ubbc0\ub85c, \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \ub9e4\uc6b0 \uc720\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n

public class User {\n    private final String name;\n    private final int age;\n    private final String email;\n\n    private User(Builder builder) {\n        this.name = builder.name;\n        this.age = builder.age;\n        this.email = builder.email;\n    }\n\n    public static class Builder {\n        private String name;\n        private int age;\n        private String email;\n\n        public Builder name(String name) {\n            this.name = name;\n            return this;\n        }\n\n        public Builder age(int age) {\n            this.age = age;\n            return this;\n        }\n\n        public Builder email(String email) {\n            this.email = email;\n            return this;\n        }\n\n        public User build() {\n            return new User(this);\n        }\n    }\n}\n\npublic class Main {\n    public static void main(String[] args) {\n        User user = new User.Builder()\n            .name(\"John Doe\")\n            .age(30)\n            .email(\"johndoe@example.com\")\n            .build();\n    }\n}<\/code><\/pre>\n

\uc704 \ucf54\ub4dc\ub294 \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc5ec User \ud074\ub798\uc2a4\ub97c \uc0dd\uc131\ud558\ub294 \uc608\uc2dc\uc785\ub2c8\ub2e4. Builder \ud074\ub798\uc2a4\uc5d0\uc11c\ub294 User \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4 \ubcc0\uc218\ub97c \uc124\uc815\ud558\uace0, build() \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec User \uac1d\uccb4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ubbc0\ub85c, \ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uacfc \uc720\uc9c0\ubcf4\uc218\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4.<\/p>\n

\uacb0\ub860<\/h1>\n

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654\ub97c \ub2e8\uacc4\ubcc4\ub85c \ucc98\ub9ac\ud558\ub294 \ubc29\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud328\ud134\uc740 \uac1d\uccb4 \uc0dd\uc131 \ubc0f \ucd08\uae30\ud654 \uacfc\uc815\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uace0, \uac00\ub3c5\uc131, \uc720\uc9c0\ubcf4\uc218\uc131, \uc720\uc5f0\uc131, \uc7ac\uc0ac\uc6a9\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0b5\ub2c8\ub2e4. \ub9ce\uc740 \uc790\ubc14 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc6a9\ub418\uace0 \uc788\uc73c\uba70, \ub9ce\uc740 \uac1c\ubc1c\uc790\ub4e4\uc774 \uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134\uc744 \ud559\uc2b5\ud558\uace0 \ud65c\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"

\uc790\ubc14 \ube4c\ub354 \ub514\uc790\uc778 \ud328\ud134: \uac1d\uccb4 \uc0dd\uc131 \ub2e8\uacc4\ubcc4 \ucc98\ub9ac.<\/p>\n","protected":false},"author":1,"featured_media":33704,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1957],"tags":[2188,3888,2580,3291,5925,3414],"class_list":["post-37214","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-public","tag-static","tag-user","tag-3291","tag-5925","tag-3414"],"acf":[],"_links":{"self":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/37214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/comments?post=37214"}],"version-history":[{"count":1,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/37214\/revisions"}],"predecessor-version":[{"id":37254,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/37214\/revisions\/37254"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/media\/33704"}],"wp:attachment":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/media?parent=37214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/categories?post=37214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/tags?post=37214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}