{"id":2630,"date":"2026-10-21T13:02:53","date_gmt":"2026-10-21T13:02:53","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=2630"},"modified":"2026-10-21T13:02:53","modified_gmt":"2026-10-21T13:02:53","slug":"ddd%ec%9d%98-%ec%95%a0%ea%b7%b8%eb%a6%ac%ea%b2%8c%ec%9d%b4%ed%8a%b8aggregate%ec%99%80-%ec%95%a0%ea%b7%b8%eb%a6%ac%ea%b2%8c%ec%9d%b4%ed%8a%b8-%eb%a3%a8%ed%8a%b8aggregate-root","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=2630","title":{"rendered":"DDD\uc758 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8(Aggregate)\uc640 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8(Aggregate Root)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub780 \ubb34\uc5c7\uc778\uac00?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3c4\uba54\uc778 \uc8fc\ub3c4 \uc124\uacc4(DDD, Domain-Driven Design)\uc5d0\uc11c <strong>\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8(Aggregate)\ub294 \uad00\ub828\ub41c \ub3c4\uba54\uc778 \uac1d\uccb4\ub4e4\uc744 \ud558\ub098\uc758 \uc77c\uad00\uc131 \uc788\ub294 \uacbd\uacc4\ub85c \ubb36\uc740 \uac1d\uccb4 \uc9d1\ud569<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub97c \uc0ac\uc6a9\ud558\ub294 \ubaa9\uc801\uc740 \ub2e8\uc21c\ud788 \uc5ec\ub7ec \uac1d\uccb4\ub97c \ud558\ub098\ub85c \ubb36\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4. \uac1d\uccb4 \uac04\uc758 \ube44\uc988\ub2c8\uc2a4 \uaddc\uce59\uc744 \ubcf4\ud638\ud558\uace0, \ub370\uc774\ud130\uc758 \uc77c\uad00\uc131\uc744 \uc720\uc9c0\ud558\uba70, \uc678\ubd80\uc5d0\uc11c \ub0b4\ubd80 \uac1d\uccb4\ub97c \uc784\uc758\ub85c \ubcc0\uacbd\ud558\ub294 \uac83\uc744 \ubc29\uc9c0\ud558\ub294 \ub370 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784\uc758 \ud50c\ub808\uc774\uc5b4 \uc778\ubca4\ud1a0\ub9ac\ub97c \uc608\ub85c \ub4e4\uc5b4\ubcf4\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud50c\ub808\uc774\uc5b4\ub294 \uc5ec\ub7ec \uc544\uc774\ud15c\uc744 \uc18c\uc720\ud558\uba70, \uc544\uc774\ud15c\ub9c8\ub2e4 \uc774\ub984\uacfc \ub0b4\uad6c\ub3c4\uac00 \uc874\uc7ac\ud55c\ub2e4. \uc544\uc774\ud15c\uc744 \uc0ac\uc6a9\ud558\uba74 \ub0b4\uad6c\ub3c4\uac00 \uac10\uc18c\ud558\uace0, \uc778\ubca4\ud1a0\ub9ac\uc5d0 \uc544\uc774\ud15c\uc744 \ucd94\uac00\ud560 \ub54c\ub294 \ucd5c\ub300 \uc2ac\ub86f \uc218\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7ec\ud55c \uaddc\uce59\uc744 \uac01\uac01\uc758 \uac1d\uccb4\uc5d0 \ubd84\uc0b0\uc2dc\ud0a4\uba74 \ub370\uc774\ud130\uc758 \uc77c\uad00\uc131\uc774 \uae68\uc9c8 \uac00\ub2a5\uc131\uc774 \ucee4\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc544\uc774\ud15c\uc744 \ucd94\uac00\ud558\ub294 \ubaa8\ub4e0 \ucf54\ub4dc\uc5d0\uc11c \uc778\ubca4\ud1a0\ub9ac \uc2ac\ub86f\uc774 50\uac1c\ub97c \ucd08\uacfc\ud558\ub294\uc9c0 \uac80\uc0ac\ud574\uc57c \ud55c\ub2e4\uba74, \ud2b9\uc815 \ucf54\ub4dc\uc5d0\uc11c \uac80\uc0ac\ub97c \ube60\ub728\ub9ac\ub294 \uc21c\uac04 \uc798\ubabb\ub41c \uc0c1\ud0dc\uac00 \ub9cc\ub4e4\uc5b4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DDD\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uad00\ub828 \uac1d\uccb4\ub97c \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub85c \ubb36\uace0, \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub97c \ud1b5\ud574 \uc0c1\ud0dc \ubcc0\uacbd\uc744 \ud1b5\uc81c\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc758 \uad6c\uc131 \uc694\uc18c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88 \uc608\uc81c\uc5d0\uc11c\ub294 <code>Player<\/code>\uac00 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\uc774\uba70, <code>InventoryItem<\/code>\uacfc <code>ItemId<\/code>\uac00 \uad00\ub828 \uac1d\uccb4\ub85c \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\uad6c\uc131 \uc694\uc18c<\/th><th>\uc5ed\ud560<\/th><\/tr><tr><td><code>Player<\/code><\/td><td>\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8. \uc778\ubca4\ud1a0\ub9ac \uaddc\uce59\uacfc \uc0c1\ud0dc \ubcc0\uacbd\uc744 \ud1b5\uc81c\ud55c\ub2e4.<\/td><\/tr><tr><td><code>InventoryItem<\/code><\/td><td>\uc778\ubca4\ud1a0\ub9ac\uc5d0 \ud3ec\ud568\ub418\ub294 \uc5d4\ud2f0\ud2f0. \uc544\uc774\ud15c\uc758 \ub0b4\uad6c\ub3c4\uc640 \uc0ac\uc6a9 \ud589\uc704\ub97c \uad00\ub9ac\ud55c\ub2e4.<\/td><\/tr><tr><td><code>ItemId<\/code><\/td><td>\uc544\uc774\ud15c\uc744 \uc2dd\ubcc4\ud558\ub294 \uac12 \uac1d\uccb4. \uc2dd\ubcc4\uc790 \uac12\uc744 \ud558\ub098\uc758 \ub3c4\uba54\uc778 \ud0c0\uc785\uc73c\ub85c \ud45c\ud604\ud55c\ub2e4.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc758 \uacbd\uacc4\ub294 \uac1d\uccb4\uac00 \ub2e8\uc21c\ud788 \uc11c\ub85c \ucc38\uc870\ud558\ub294 \ubc94\uc704\uac00 \uc544\ub2c8\ub2e4. <strong>\uc5b4\ub5a4 \uac1d\uccb4\ub4e4\uc774 \ud558\ub098\uc758 \uc77c\uad00\uc131 \uacbd\uacc4 \uc548\uc5d0\uc11c \uad00\ub9ac\ub418\uc5b4\uc57c \ud558\ub294\uc9c0<\/strong>\ub97c \uc815\uc758\ud558\ub294 \uc124\uacc4 \uac1c\ub150\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uac12 \uac1d\uccb4(Value Object)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac12 \uac1d\uccb4\ub294 \uace0\uc720\ud55c \uc2dd\ubcc4\uc790\ubcf4\ub2e4 \ub0b4\ubd80\uc5d0 \ub2f4\uae34 \uac12\uc73c\ub85c \uc758\ubbf8\uac00 \uacb0\uc815\ub418\ub294 \uac1d\uccb4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class ItemId {\n  constructor(public readonly value: string) {}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ItemId<\/code>\ub294 \ubb38\uc790\uc5f4 \uc2dd\ubcc4\uc790\ub97c \ud558\ub098\uc758 \ud0c0\uc785\uc73c\ub85c \uac10\uc2fc \uac12 \uac1d\uccb4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18 \ubb38\uc790\uc5f4\uc744 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uba74 \ud50c\ub808\uc774\uc5b4 ID, \uc544\uc774\ud15c ID, \uc8fc\ubb38 ID \ub4f1\uc744 \ubaa8\ub450 \ub3d9\uc77c\ud55c <code>string<\/code> \ud0c0\uc785\uc73c\ub85c \ucde8\uae09\ud558\uac8c \ub41c\ub2e4. \ubc18\uba74 \ubcc4\ub3c4\uc758 \ud0c0\uc785\uc744 \uc815\uc758\ud558\uba74 \ub3c4\uba54\uc778\uc758 \uc758\ubbf8\ub97c \ucf54\ub4dc\uc5d0 \uba85\uc2dc\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const itemId = new ItemId(\"item-001\");\n\nconsole.log(itemId.value);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \ud604\uc7ac \uad6c\ud604\uc740 \uac12 \uac1d\uccb4\uc758 \ucd5c\uc18c \ud615\ud0dc\uc5d0 \uac00\uae5d\ub2e4. \uc0dd\uc131\uc790\uc5d0\uc11c \uc720\ud6a8\uc131\uc744 \uac80\uc0ac\ud558\uc9c0 \uc54a\uc73c\uba70, <code>readonly<\/code>\ub294 \ud504\ub85c\ud37c\ud2f0 \uc7ac\ud560\ub2f9\ub9cc \ub9c9\uc744 \ubfd0 \uac1d\uccb4 \uc804\uccb4\ub97c \ubd88\ubcc0\uc73c\ub85c \ub9cc\ub4dc\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uac12 \uac1d\uccb4\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uaddc\uce59\uc744 \uace0\ub824\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc2dd\ubcc4\uc790 \uac12 \uac70\ubd80<\/li>\n\n\n\n<li>\uac12\uc758 \ub3d9\ub4f1\uc131 \ube44\uad50<\/li>\n\n\n\n<li>\uc678\ubd80\uc5d0\uc11c \ub0b4\ubd80 \uc0c1\ud0dc\ub97c \uc784\uc758\ub85c \ubcc0\uacbd\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \uc81c\ud55c<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c <code>ItemId<\/code>\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uace0 \ud574\uc11c TypeScript\uac00 \uc11c\ub85c \ub2e4\ub978 ID \ud0c0\uc785\uc744 \uc790\ub3d9\uc73c\ub85c \uc644\uc804\ud788 \uad6c\ubd84\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. \ud604\uc7ac\ucc98\ub7fc \ubb38\uc790\uc5f4\uc744 \uac10\uc2fc \ud074\ub798\uc2a4\ub294 \uba85\uc2dc\uc801\uc778 \ud0c0\uc785\uacfc \ub3c4\uba54\uc778 \uc758\ubbf8\ub97c \uc81c\uacf5\ud558\uc9c0\ub9cc, \uac15\ud55c \ud0c0\uc785 \uad6c\ubd84\uc774 \ud544\uc694\ud558\ub2e4\uba74 \ubcc4\ub3c4\uc758 \ud0c0\uc785 \uc124\uacc4\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc5d4\ud2f0\ud2f0(Entity): InventoryItem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5d4\ud2f0\ud2f0\ub294 \uace0\uc720\ud55c \uc2dd\ubcc4\uc131\uc744 \uac00\uc9c0\uba70, \uc2dc\uac04\uc758 \ud750\ub984\uc5d0 \ub530\ub77c \uc0c1\ud0dc\uac00 \ubcc0\uacbd\ub418\ub354\ub77c\ub3c4 \ub3d9\uc77c\ud55c \uac1d\uccb4\ub85c \uc778\uc2dd\ub418\ub294 \ub3c4\uba54\uc778 \uac1d\uccb4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class InventoryItem {\n  constructor(\n    private readonly id: ItemId,\n    private name: string,\n    private durability: number\n  ) {}\n\n  public use(): void {\n    if (this.durability &lt;= 0) {\n      throw new Error(\"\uc774\ubbf8 \ub0b4\uad6c\ub3c4\uac00 \ub2e4 \ub2f3\uc740 \uc544\uc774\ud15c\uc785\ub2c8\ub2e4.\");\n    }\n\n    this.durability -= 10;\n  }\n\n  public getDurability(): number {\n    return this.durability;\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>InventoryItem<\/code>\uc740 \uc544\uc774\ud15c ID\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba70, \uc544\uc774\ud15c\uc758 \ub0b4\uad6c\ub3c4\ub77c\ub294 \uc0c1\ud0dc\ub97c \uad00\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\uc774\ud15c\uc744 \uc0ac\uc6a9\ud558\uba74 <code>use()<\/code> \uba54\uc11c\ub4dc\ub97c \ud1b5\ud574 \ub0b4\uad6c\ub3c4\uac00 10 \uac10\uc18c\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc911\uc694\ud55c \uc810\uc740 \ub0b4\uad6c\ub3c4\ub97c \uc678\ubd80\uc5d0\uc11c \uc9c1\uc811 \ubcc0\uacbd\ud558\uc9c0 \uc54a\ub294\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc870\ub97c \uc0dd\uac01\ud574 \ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>item.durability -= 10;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub0b4\uad6c\ub3c4\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4\uba74 \uc544\uc774\ud15c \uc0ac\uc6a9 \uaddc\uce59\uc744 \uac70\uce58\uc9c0 \uc54a\uace0 \uc0c1\ud0dc\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4. \ubc18\uba74 <code>use()<\/code> \uba54\uc11c\ub4dc\ub97c \ud1b5\ud574 \ubcc0\uacbd\ud558\uba74 \uc544\uc774\ud15c\uc774 \uc790\uc2e0\uc758 \ube44\uc988\ub2c8\uc2a4 \uaddc\uce59\uc744 \uc9c1\uc811 \ubcf4\ud638\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac83\uc740 \uac1d\uccb4\uc9c0\ud5a5 \uc124\uacc4\uc758 \ucea1\uc290\ud654\uc640\ub3c4 \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc0c1\ud0dc\ub97c \ubcf4\uad00\ud558\ub294 \uac83\uacfc \uc0c1\ud0dc \ubcc0\uacbd\uc758 \uaddc\uce59\uc744 \uc18c\uc720\ud558\ub294 \uac83\uc740 \ub2e4\ub974\ub2e4.<\/strong> \uc5d4\ud2f0\ud2f0\ub294 \uc790\uc2e0\uc758 \uc0c1\ud0dc\uc640 \uad00\ub828\ub41c \ube44\uc988\ub2c8\uc2a4 \ud589\uc704\ub97c \ud568\uaed8 \uad00\ub9ac\ud558\ub294 \uac83\uc774 \ubc14\ub78c\uc9c1\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8, \ud604\uc7ac \ucf54\ub4dc\uc5d0\uc11c\ub294 <code>name<\/code>\uacfc <code>durability<\/code>\uac00 \uc0dd\uc131\uc790\uc5d0\uc11c \uac80\uc99d\ub418\uc9c0 \uc54a\ub294\ub2e4. \uc74c\uc218 \ub0b4\uad6c\ub3c4\ub97c \uac00\uc9c4 \uc544\uc774\ud15c\uc774 \uc0dd\uc131\ub418\ub294 \uc0c1\ud669\uae4c\uc9c0 \ub9c9\uc73c\ub824\uba74 \uc0dd\uc131 \uc2dc\uc810\uc758 \uc720\ud6a8\uc131 \uac80\uc0ac\ub3c4 \ucd94\uac00\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8(Aggregate Root): Player<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub294 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \uc678\ubd80\uc5d0\uc11c \ud574\ub2f9 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc5d0 \uc811\uadfc\ud558\ub294 \ub300\ud45c \uac1d\uccb4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Player {\n  constructor(\n    private readonly id: string,\n    private level: number,\n    private items: InventoryItem&#91;]\n  ) {}\n\n  public useItem(itemId: string): void {\n    const targetItem = this.items.find(\n      (item) =&gt; item.id.value === itemId\n    );\n\n    if (!targetItem) {\n      throw new Error(\"\uc778\ubca4\ud1a0\ub9ac\uc5d0 \ud574\ub2f9 \uc544\uc774\ud15c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.\");\n    }\n\n    targetItem.use();\n  }\n\n  public addItem(item: InventoryItem): void {\n    if (this.items.length &gt;= 50) {\n      throw new Error(\"\uc778\ubca4\ud1a0\ub9ac \uc2ac\ub86f\uc774 \uac00\ub4dd \ucc3c\uc2b5\ub2c8\ub2e4.\");\n    }\n\n    this.items.push(item);\n  }\n\n  public getId(): string {\n    return this.id;\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Player<\/code>\ub294 \uc778\ubca4\ud1a0\ub9ac\ub97c \uad00\ub9ac\ud558\ub294 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ubd80\uc5d0\uc11c\ub294 <code>InventoryItem<\/code>\uc744 \uc9c1\uc811 \uc870\uc791\ud558\ub294 \ub300\uc2e0 <code>Player<\/code>\uc758 \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud574 \uc544\uc774\ud15c \uc0ac\uc6a9\uc744 \uc694\uccad\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>player.useItem(\"item-001\");<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc694\uccad\uc774 \ucc98\ub9ac\ub418\ub294 \uacfc\uc815\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><code>Player<\/code>\uac00 \uc778\ubca4\ud1a0\ub9ac\uc5d0\uc11c \ud574\ub2f9 \uc544\uc774\ud15c\uc744 \ucc3e\ub294\ub2e4.<\/li>\n\n\n\n<li>\uc544\uc774\ud15c\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc73c\uba74 \uc608\uc678\ub97c \ubc1c\uc0dd\uc2dc\ud0a8\ub2e4.<\/li>\n\n\n\n<li>\uc544\uc774\ud15c\uc774 \uc874\uc7ac\ud558\uba74 <code>InventoryItem.use()<\/code>\ub97c \ud638\ucd9c\ud55c\ub2e4.<\/li>\n\n\n\n<li><code>InventoryItem<\/code>\uc774 \uc790\uc2e0\uc758 \ub0b4\uad6c\ub3c4 \uaddc\uce59\uc744 \uac80\uc0ac\ud558\uace0 \uc0c1\ud0dc\ub97c \ubcc0\uacbd\ud55c\ub2e4.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uac01 \uac1d\uccb4\uc758 \ucc45\uc784\uc774 \ubd84\ub9ac\ub41c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Player<\/code>: \ud574\ub2f9 \uc544\uc774\ud15c\uc744 \uc18c\uc720\ud558\uace0 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uace0, \uc778\ubca4\ud1a0\ub9ac \uaddc\uce59\uc744 \ud1b5\uc81c\ud55c\ub2e4.<\/li>\n\n\n\n<li><code>InventoryItem<\/code>: \uc544\uc774\ud15c \uc0ac\uc6a9 \uac00\ub2a5 \uc5ec\ubd80\ub97c \uac80\uc0ac\ud558\uace0 \ub0b4\uad6c\ub3c4\ub97c \ubcc0\uacbd\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\uac00 \ubaa8\ub4e0 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \uc9c1\uc811 \uad6c\ud604\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. \ub0b4\ubd80 \uc5d4\ud2f0\ud2f0\uc5d0 \uc801\uc808\ud55c \ucc45\uc784\uc744 \uc704\uc784\ud558\uba74\uc11c \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \uc804\uccb4\uc758 \uc77c\uad00\uc131\uc744 \ubcf4\uc7a5\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\uac00 \ubd88\ubcc0\uc2dd(Invariant)\uc744 \ubcf4\ud638\ud558\ub294 \ubc29\ubc95<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd88\ubcc0\uc2dd\uc740 \ub3c4\uba54\uc778 \uac1d\uccb4\uac00 \ud56d\uc0c1 \ub9cc\uc871\ud574\uc57c \ud558\ub294 \uaddc\uce59\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88 \uc608\uc81c\uc5d0\uc11c\ub294 \uc778\ubca4\ud1a0\ub9ac \uc2ac\ub86f\uc774 50\uac1c\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\ub2e4\ub294 \uaddc\uce59\uc774 \ubd88\ubcc0\uc2dd\uc5d0 \ud574\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public addItem(item: InventoryItem): void {\n  if (this.items.length &gt;= 50) {\n    throw new Error(\"\uc778\ubca4\ud1a0\ub9ac \uc2ac\ub86f\uc774 \uac00\ub4dd \ucc3c\uc2b5\ub2c8\ub2e4.\");\n  }\n\n  this.items.push(item);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\uc774\ud15c \ucd94\uac00\ub97c <code>Player.addItem()<\/code>\uc73c\ub85c \ud1b5\uc81c\ud558\uba74 \uc2ac\ub86f \uc218 \uc81c\ud55c\uc744 \ud55c\uacf3\uc5d0\uc11c \uac80\uc0ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \uc678\ubd80\uc5d0\uc11c <code>items.push(item)<\/code>\uc744 \uc9c1\uc811 \ud638\ucd9c\ud560 \uc218 \uc788\ub2e4\uba74 <code>addItem()<\/code>\uc744 \uc6b0\ud68c\ud558\uc5ec \uc2ac\ub86f \uc81c\ud55c\uc744 \ubb34\ub108\ub728\ub9b4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub294 \ub0b4\ubd80 \uceec\ub809\uc158\uc744 \uc678\ubd80\uc5d0 \uc9c1\uc811 \ub178\ucd9c\ud558\uc9c0 \uc54a\uace0, \uaddc\uce59\uc744 \uc801\uc6a9\ud558\ub294 \uba54\uc11c\ub4dc\ub97c \ud1b5\ud574 \uc0c1\ud0dc\ub97c \ubcc0\uacbd\ud558\ub3c4\ub85d \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubd88\ubcc0\uc2dd\uc740 \ub2e8\uc21c\ud788 \uc608\uc678\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \uc870\uac74\ubb38\uc774 \uc544\ub2c8\ub2e4. <strong>\uc5b4\ub5a4 \uc0c1\ud0dc\uac00 \uc720\ud6a8\ud55c \uc0c1\ud0dc\uc778\uc9c0 \uc815\uc758\ud558\uace0, \ubaa8\ub4e0 \uc0c1\ud0dc \ubcc0\uacbd \uacbd\ub85c\uc5d0\uc11c \uadf8 \uc720\ud6a8\uc131\uc744 \uc720\uc9c0\ud558\ub294 \uaddc\uce59<\/strong>\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \ud604\uc7ac \uad6c\ud604\uc5d0\uc11c <code>items<\/code>\ub294 <code>private<\/code>\uc774\ubbc0\ub85c \uc678\ubd80 \ucf54\ub4dc\uac00 <code>player.items<\/code>\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud560 \uc218 \uc5c6\ub2e4. \uadf8\ub807\ub354\ub77c\ub3c4 \uc0dd\uc131\uc790\uc5d0 \uc804\ub2ec\ud55c \ubc30\uc5f4\uc744 \uc678\ubd80\uc5d0\uc11c\ub3c4 \ucc38\uc870\ud558\uace0 \uc788\ub2e4\uba74 \uadf8 \ubc30\uc5f4\uc744 \ud1b5\ud574 \ub0b4\ubd80 \uc0c1\ud0dc\uac00 \ubcc0\uacbd\ub420 \uc218 \uc788\ub2e4. \uc0dd\uc131\uc790\uc5d0\uc11c \ubc30\uc5f4\uc744 \ubcf5\uc0ac\ud558\ub294 \ub4f1\uc758 \ubc29\uc5b4\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc65c \uc678\ubd80\uc5d0\uc11c\ub294 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub97c \ud1b5\ud574\uc11c\ub9cc \uc811\uadfc\ud574\uc57c \ud558\ub294\uac00?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub97c \ud1b5\ud55c \uc811\uadfc\uc740 \ub2e8\uc21c\ud55c \ucf54\ub4dc \uc2a4\ud0c0\uc77c\uc774 \uc544\ub2c8\ub77c \ub3c4\uba54\uc778 \uc77c\uad00\uc131\uc744 \ubcf4\ud638\ud558\uae30 \uc704\ud55c \uc124\uacc4 \uaddc\uce59\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ube44\uc2a4\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \ub3d9\uc791\ud55c\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \uad8c\uc7a5\ud558\uc9c0 \uc54a\ub294 \uc811\uadfc \ubc29\uc2dd\uc758 \uc608\uc2dc\nconst item = await itemRepository.findById(\"item-001\");\n\nitem.use();\n\nawait itemRepository.save(item);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ucf54\ub4dc\uac00 \ubc18\ub4dc\uc2dc \uc798\ubabb\ub41c \uac83\uc740 \uc544\ub2c8\ub2e4. \ud558\uc9c0\ub9cc <code>item<\/code>\uc774 <code>Player<\/code> \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub0b4\ubd80\uc5d0 \uc18d\ud55c\ub2e4\uba74, \uc544\uc774\ud15c\uc744 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc870\ud68c\ud558\uace0 \ubcc0\uacbd\ud558\ub294 \ubc29\uc2dd\uc740 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc758 \uacbd\uacc4\ub97c \uc6b0\ud68c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\ubca4\ud1a0\ub9ac \uc18c\uc720 \uc5ec\ubd80, \ud50c\ub808\uc774\uc5b4 \uc0c1\ud0dc, \uc544\uc774\ud15c \uc0ac\uc6a9 \uc81c\ud55c \ub4f1\uc774 \uc5ec\ub7ec \uac1d\uccb4\uc5d0 \uac78\uccd0 \uc788\ub2e4\uba74 \uc774\ub7ec\ud55c \uaddc\uce59\uc744 \uc77c\uad00\ub418\uac8c \uc801\uc6a9\ud558\uae30 \uc5b4\ub824\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub97c \ud1b5\ud574 \ucc98\ub9ac\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uacc4\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const player = await playerRepository.findById(playerId);\n\nif (!player) {\n  throw new Error(\"\ud50c\ub808\uc774\uc5b4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\");\n}\n\nplayer.useItem(\"item-001\");\n\nawait playerRepository.save(player);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\uc5d0\uc11c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ube44\uc2a4\uac00 \ud50c\ub808\uc774\uc5b4\ub97c \uc870\ud68c\ud558\uace0, \ub3c4\uba54\uc778 \ud589\uc704\ub97c \ud638\ucd9c\ud558\uace0, \uc800\uc7a5\uc744 \uc694\uccad\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \uacc4\uce35\uc758 \ucc45\uc784\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Application Service<\/strong>: \uc720\uc2a4\ucf00\uc774\uc2a4\uc758 \uc2e4\ud589 \ud750\ub984\uc744 \uc870\uc815\ud55c\ub2e4.<\/li>\n\n\n\n<li><strong>Repository<\/strong>: \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub97c \uc870\ud68c\ud558\uace0 \uc800\uc7a5\ud55c\ub2e4.<\/li>\n\n\n\n<li><strong>Aggregate Root<\/strong>: \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc758 \uc0c1\ud0dc \ubcc0\uacbd\uacfc \uaddc\uce59\uc744 \ud1b5\uc81c\ud55c\ub2e4.<\/li>\n\n\n\n<li><strong>Entity<\/strong>: \uc790\uc2e0\uc758 \uc0c1\ud0dc\uc640 \uad00\ub828\ub41c \ube44\uc988\ub2c8\uc2a4 \ud589\uc704\ub97c \uc218\ud589\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uad6c\ud604\uc5d0\uc11c\ub294 <code>PlayerRepository<\/code>\uac00 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub97c \uc5b4\ub5bb\uac8c \uc800\uc7a5\ud558\ub294\uc9c0\uc5d0 \ub530\ub77c \ub0b4\ubd80 \uc544\uc774\ud15c\uc758 \uc601\uc18d\ud654 \ubc29\uc2dd\ub3c4 \ub2ec\ub77c\uc9c8 \uc218 \uc788\ub2e4. \ud575\uc2ec\uc740 \uc800\uc7a5 \uae30\uc220\uc774 \uc544\ub2c8\ub77c \ub3c4\uba54\uc778\uc758 \uc77c\uad00\uc131 \uacbd\uacc4\ub97c \uc720\uc9c0\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uad00\uacc4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uac00 \ud558\ub098\uc758 \uacbd\uacc4\ub97c \ud615\uc131\ud55c\ub2e4\uace0 \ud574\uc11c \ubc18\ub4dc\uc2dc \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud14c\uc774\ube14 \ud558\ub098\ub85c \uc800\uc7a5\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc774 \uc800\uc7a5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>players \ud14c\uc774\ube14<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>player_id<\/th><th>level<\/th><\/tr><tr><td>player-001<\/td><td>10<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>inventory_items \ud14c\uc774\ube14<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>item_id<\/th><th>player_id<\/th><th>name<\/th><th>durability<\/th><\/tr><tr><td>item-001<\/td><td>player-001<\/td><td>Iron Sword<\/td><td>80<\/td><\/tr><tr><td>item-002<\/td><td>player-001<\/td><td>Wooden Shield<\/td><td>40<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c\ub294 \ud50c\ub808\uc774\uc5b4\uc640 \uc544\uc774\ud15c\uc744 \ubcc4\ub3c4 \ud14c\uc774\ube14\ub85c \uad00\ub9ac\ud560 \uc218 \uc788\ub2e4. \uadf8\ub7ec\ub098 \ub3c4\uba54\uc778 \ubaa8\ub378\uc5d0\uc11c\ub294 <code>Player<\/code>\uc640 \uadf8 \uc778\ubca4\ud1a0\ub9ac\ub97c \ud558\ub098\uc758 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub85c \ucde8\uae09\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc989, \ub2e4\uc74c \ub450 \uac1c\ub150\uc740 \uad6c\ubd84\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc800\uc7a5 \uad6c\uc870<\/strong>: \ud14c\uc774\ube14, \ud589, \uc678\ub798 \ud0a4, \uc778\ub371\uc2a4 \ub4f1\uc758 \uad6c\uc131<\/li>\n\n\n\n<li><strong>\ub3c4\uba54\uc778\uc758 \uc77c\uad00\uc131 \uacbd\uacc4<\/strong>: \uc5b4\ub5a4 \uac1d\uccb4\uc640 \uaddc\uce59\uc744 \ud558\ub098\uc758 \ub2e8\uc704\ub85c \uad00\ub9ac\ud560 \uac83\uc778\uc9c0\uc5d0 \ub300\ud55c \uc124\uacc4<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud14c\uc774\ube14\uc744 \ub300\ud45c\ud558\ub294 \uac1d\uccb4\uac00 \uc544\ub2c8\ub77c \ub3c4\uba54\uc778 \ubaa8\ub378\uc758 \uc77c\uad00\uc131 \uacbd\uacc4\ub97c \ub300\ud45c\ud558\ub294 \uac1d\uccb4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub97c \ud1b5\ud574 \ubcc0\uacbd\uc744 \ud1b5\uc81c\ud55c\ub2e4\ub294 \uac83\ub9cc\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ub3d9\uc2dc\uc131 \ubb38\uc81c\uac00 \uc790\ub3d9\uc73c\ub85c \ud574\uacb0\ub418\uc9c0\ub294 \uc54a\ub294\ub2e4. \uc5ec\ub7ec \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \uc778\ubca4\ud1a0\ub9ac\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\ub294 \uc11c\ubc84\ub77c\uba74 \ud2b8\ub79c\uc7ad\uc158, \ub099\uad00\uc801 \uc7a0\uae08, \ube44\uad00\uc801 \uc7a0\uae08 \ub4f1 \uc801\uc808\ud55c \ub3d9\uc2dc\uc131 \uc81c\uc5b4\ub3c4 \uac80\ud1a0\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2e4\ubb34\uc5d0\uc11c \ubcf4\uc644\ud574\uc57c \ud560 \ubd80\ubd84<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac \uc608\uc81c\ub294 \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc758 \uae30\ubcf8 \uac1c\ub150\uc744 \ubcf4\uc5ec\uc8fc\uc9c0\ub9cc, \uc2e4\uc81c \uac8c\uc784 \uc11c\ubc84\uc5d0 \uc801\uc6a9\ud558\ub824\uba74 \uba87 \uac00\uc9c0 \uc0ac\ud56d\uc744 \ubcf4\uc644\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc544\uc774\ud15c \uc0dd\uc131 \uac80\uc99d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>durability<\/code>\uac00 \uc74c\uc218\uc774\uac70\ub098 \uc720\ud6a8 \ubc94\uc704\ub97c \ubc97\uc5b4\ub098\ub294 \uc544\uc774\ud15c\uc774 \uc0dd\uc131\ub418\uc9c0 \uc54a\ub3c4\ub85d \uc0dd\uc131\uc790\uc5d0\uc11c \uac80\uc99d\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc2dd\ubcc4\uc790 \ube44\uad50<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac \ucf54\ub4dc\ub294 <code>ItemId<\/code>\ub97c \ubb38\uc790\uc5f4\ub85c \uac10\uc2fc \ub4a4 <code>item.id.value<\/code>\uc640 \ube44\uad50\ud55c\ub2e4. \uc2e4\uc81c \uad6c\ud604\uc5d0\uc11c\ub294 <code>ItemId.equals()<\/code> \uac19\uc740 \ube44\uad50 \uba54\uc11c\ub4dc\ub97c \uc81c\uacf5\ud558\uba74 \ub3c4\uba54\uc778 \ud0c0\uc785\uc758 \uc758\ubbf8\ub97c \ub354 \uba85\ud655\ud558\uac8c \uc720\uc9c0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc778\ubca4\ud1a0\ub9ac \uc911\ubcf5 \ubc0f \uc18c\uc720\uad8c \uac80\uc99d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac19\uc740 \uc544\uc774\ud15c\uc744 \uc911\ubcf5\uc73c\ub85c \ucd94\uac00\ud558\uac70\ub098, \ub2e4\ub978 \ud50c\ub808\uc774\uc5b4\uac00 \uc18c\uc720\ud55c \uc544\uc774\ud15c\uc744 \ucd94\uac00\ud558\ub294 \uc0c1\ud669\uc744 \ub9c9\uc544\uc57c \ud55c\ub2e4. \uc544\uc774\ud15c\uc774 \uc18c\uc720\uc790\ub97c \uc9c1\uc811 \ubcf4\uad00\ud558\ub294\uc9c0, \uc778\ubca4\ud1a0\ub9ac\uc5d0\uc11c \uc18c\uc720\uad8c\uc744 \uad00\ub9ac\ud558\ub294\uc9c0\ub294 \ub3c4\uba54\uc778 \ubaa8\ub378\uc5d0 \ub530\ub77c \uacb0\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uceec\ub809\uc158 \ucea1\uc290\ud654<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0dd\uc131\uc790\uc5d0 \uc804\ub2ec\ub41c \ubc30\uc5f4\uc744 \ubcf5\uc0ac\ud558\uace0, \uc678\ubd80\uc5d0 \ub0b4\ubd80 \ubc30\uc5f4\uc744 \uc9c1\uc811 \ubc18\ud658\ud558\uc9c0 \uc54a\uc544\uc57c \ud55c\ub2e4. \uceec\ub809\uc158\uc744 \uc870\ud68c\ud558\ub294 \uba54\uc11c\ub4dc\uac00 \ud544\uc694\ud558\ub2e4\uba74 \ubcf5\uc0ac\ubcf8\uc774\ub098 \uc77d\uae30 \uc804\uc6a9 \ud615\ud0dc\ub97c \uc81c\uacf5\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ub0b4\uad6c\ub3c4 \uac10\uc18c \uaddc\uce59<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac <code>use()<\/code>\ub294 \ub0b4\uad6c\ub3c4\uac00 1~9\uc778 \uc544\uc774\ud15c\ub3c4 \uc0ac\uc6a9\ud558\uba74 \uc74c\uc218\uac00 \ub420 \uc218 \uc788\ub2e4. \ub0b4\uad6c\ub3c4\ub97c 0 \uc544\ub798\ub85c \ub0b4\ub824\uac00\uc9c0 \uc54a\uac8c \ud560 \uac83\uc778\uc9c0, \ub0b4\uad6c\ub3c4 \ubd80\uc871 \uc2dc \uc0ac\uc6a9 \uc790\uccb4\ub97c \uac70\ubd80\ud560 \uac83\uc778\uc9c0 \ub3c4\uba54\uc778 \uaddc\uce59\uc744 \uba85\ud655\ud788 \ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc601\uc18d\uc131\uacfc \ub3d9\uc2dc\uc131<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \uac19\uc740 \ud50c\ub808\uc774\uc5b4\uc758 \uc778\ubca4\ud1a0\ub9ac\ub97c \uc218\uc815\ud55c\ub2e4\uba74, \uc800\uc7a5 \uc2dc\uc810\uc5d0 \ubcc0\uacbd \ucda9\ub3cc\uc774 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4. \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\uc758 \uacbd\uacc4\uc640 \ud568\uaed8 \ud2b8\ub79c\uc7ad\uc158 \ubc0f \ub3d9\uc2dc\uc131 \uc81c\uc5b4 \uc804\ub7b5\uc744 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ub9c8\ubb34\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub294 \ub2e8\uc21c\ud788 \uc5ec\ub7ec \uac1d\uccb4\ub97c \ubb36\ub294 \uad6c\uc870\uac00 \uc544\ub2c8\ub2e4. \ub3c4\uba54\uc778 \uac1d\uccb4 \uac04\uc758 \uc77c\uad00\uc131\uc744 \uc720\uc9c0\ud558\uae30 \uc704\ud55c \uacbd\uacc4\uc774\uba70, \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub294 \uadf8 \uacbd\uacc4\ub97c \uc678\ubd80\ub85c\ubd80\ud130 \ubcf4\ud638\ud558\ub294 \uc9c4\uc785\uc810\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88 \uc608\uc81c\uc5d0\uc11c <code>Player<\/code>\ub294 \uc778\ubca4\ud1a0\ub9ac \uc2ac\ub86f \uc81c\ud55c\uacfc \uc544\uc774\ud15c \uc0ac\uc6a9 \uc694\uccad\uc744 \ud1b5\uc81c\ud558\uace0, <code>InventoryItem<\/code>\uc740 \uc790\uc2e0\uc758 \ub0b4\uad6c\ub3c4 \uaddc\uce59\uc744 \uad00\ub9ac\ud55c\ub2e4. <code>ItemId<\/code>\ub294 \uc544\uc774\ud15c \uc2dd\ubcc4\uc790\ub97c \ub3c4\uba54\uc778 \ud0c0\uc785\uc73c\ub85c \ud45c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud575\uc2ec \uc6d0\uce59\uc740 \uc138 \uac00\uc9c0\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub294 \uc77c\uad00\uc131 \uacbd\uacc4\ub97c \uc815\uc758\ud55c\ub2e4.<\/strong><\/li>\n\n\n\n<li><strong>\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8 \ub8e8\ud2b8\ub294 \uc678\ubd80\uc758 \uc0c1\ud0dc \ubcc0\uacbd\uc744 \ud1b5\uc81c\ud55c\ub2e4.<\/strong><\/li>\n\n\n\n<li><strong>\uac01 \uc5d4\ud2f0\ud2f0\ub294 \uc790\uc2e0\uc758 \ucc45\uc784\uc5d0 \ud574\ub2f9\ud558\ub294 \ube44\uc988\ub2c8\uc2a4 \uaddc\uce59\uc744 \uc218\ud589\ud55c\ub2e4.<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc6d0\uce59\uc744 \uc9c0\ud0a4\uba74 \ub3c4\uba54\uc778 \uaddc\uce59\uc774 \uc5ec\ub7ec \uc11c\ube44\uc2a4\uc640 \uc800\uc7a5\uc18c\uc5d0 \ud769\uc5b4\uc9c0\ub294 \uac83\uc744 \uc904\uc774\uace0, \ubcc0\uacbd \uac00\ub2a5\ud55c \uacbd\ub85c\ub97c \uba85\ud655\ud558\uac8c \uad00\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub780 \ubb34\uc5c7\uc778\uac00? \ub3c4\uba54\uc778 \uc8fc\ub3c4 \uc124\uacc4(DDD, Domain-Driven Design)\uc5d0\uc11c \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8(Aggregate)\ub294 \uad00\ub828\ub41c \ub3c4\uba54\uc778 \uac1d\uccb4\ub4e4\uc744 \ud558\ub098\uc758 \uc77c\uad00\uc131 \uc788\ub294 \uacbd\uacc4\ub85c \ubb36\uc740 \uac1d\uccb4 \uc9d1\ud569\uc774\ub2e4. \uc560\uadf8\ub9ac\uac8c\uc774\ud2b8\ub97c \uc0ac\uc6a9\ud558\ub294 \ubaa9\uc801\uc740 \ub2e8\uc21c\ud788 \uc5ec\ub7ec \uac1d\uccb4\ub97c \ud558\ub098\ub85c \ubb36\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4. \uac1d\uccb4 \uac04\uc758 \ube44\uc988\ub2c8\uc2a4 \uaddc\uce59\uc744 \ubcf4\ud638\ud558\uace0, \ub370\uc774\ud130\uc758 \uc77c\uad00\uc131\uc744 \uc720\uc9c0\ud558\uba70, \uc678\ubd80\uc5d0\uc11c \ub0b4\ubd80 \uac1d\uccb4\ub97c \uc784\uc758\ub85c \ubcc0\uacbd\ud558\ub294 \uac83\uc744 \ubc29\uc9c0\ud558\ub294 \ub370 \uc788\ub2e4. \uac8c\uc784\uc758 \ud50c\ub808\uc774\uc5b4 \uc778\ubca4\ud1a0\ub9ac\ub97c \uc608\ub85c \ub4e4\uc5b4\ubcf4\uc790. \ud50c\ub808\uc774\uc5b4\ub294 \uc5ec\ub7ec \uc544\uc774\ud15c\uc744 \uc18c\uc720\ud558\uba70, \uc544\uc774\ud15c\ub9c8\ub2e4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2630","post","type-post","status-publish","format-standard","hentry","category-dev-logs"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2630"}],"version-history":[{"count":1,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2630\/revisions"}],"predecessor-version":[{"id":2631,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2630\/revisions\/2631"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}