์ธ๋ฒคํ ๋ฆฌ ์ค๊ณ์ค์ธ๋ฐ ์ธ๋ฒคํ ๋ฆฌ ํด๋์ค๊ฐ ์ปค์ ธ์ ๋ฐ๋ก ํด๋์ค๋ฅผ ํ๊ณ ๊ธฐ๋ฅ๋ค์ ๋ถ๋ฐฐํ๋ คํจ
์๋ ํด๋์ค๊ฐ
class Inventory
{
private Item[,] _itemArray;
prviate void AddItem(Item item)
{
// ์์ดํ ์ฝ์
SortInventory();
}
private void EraseItem(Item item)
{
// ์์ดํ ์ง์
SortInventory();
}
private void SortInventory()
{
// ์์ดํ ๋น๊ณต๊ฐ ์ฐพ์์ ์ ๋ ฌ
}
}
๋์ถฉ ์ด๋ฐ์์ด๋ผ๊ณ ์ณค์๋ ์ธ๋ฒคํ ๋ฆฌ ์ ๋ ฌ๋ถ๋ถ์ ๋ฐ๋ก ๋ผ์ ํ๋ ์ด์ด๊ฐ ์ํ๋ ์ ๋ ฌ๊ธฐ์ค์ผ๋ก ์ธํ ํ๋ฉด ๊ทธ ๊ธฐ์ค๋๋ก ์ธํ ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ถ์์ํฉ์
class InventorySorter
{
public SortInventory();
}
class Inventory
{
private Item[,] _itemArray;
private InventorySorter _sorter;
prviate void AddItem(Item item)
{
// ์์ดํ ์ฝ์
sorter.SortInventory();
}
private void EraseItem(Item item)
{
// ์์ดํ ์ง์
sorter.SortInventory();
}
}
๊ทผ๋ฐ ์ด๋ฐ์์ผ๋ก ์งํํ๋ฉด InventorySorter ์์ฒด์์ ์ํ ์ ์ํํ๊ธฐ์ํด Inventory์ ๋ด๋ถ๋ณ์๋ฐฐ์ด _itemArray์ ์ง์ ์ ๊ทผํด์ผํ์์ด?
์ด๋ฐ ์ํฉ์์ ์ด๋ป๊ฒ ํ๋๊ฒ ์ข ๋ ์์์ ์ธ ์ ๊ทผ์ผ๊น ๊ณ ๋ฏผ์ค์ธ๋ฐ
1. Sorter ํด๋์ค์์ Inventoryํด๋์ค์ ๋ด๋ถ๋ณ์๋ฐฐ์ด์ ์ฐธ์กฐ๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ์ Sorterํด๋์ค ๋ด๋ถ์์ ์ง์ ์กฐ์ํ๋ค
2. Inventoryํด๋์ค์์ ์ ๋ ฌ ํจ์๋ค์ ์ ์ํ๊ณ Sorterํด๋์ค์์ ํ๋ ์ด์ด์ ์ค์ ์ ๋ ฅ๋ง ์ฒ๋ฆฌํ๊ณ ์ ๋ ฌ์ํ์ Inventoryํด๋์ค ๋ด ์ ์๋
ํจ์๋ค์ Sorterํด๋์ค์์ ํธ์ถํ๋ค
์ด ๋๊ฐ์ง๋ก ์ง๊ธ ๊ณ ๋ฏผ์ค์ธ๋ฐ ์ด๋ป๊ฒ ํ๋๊ฒ ์ข์๊น? ์ต๋ํ ๋์ปคํ๋ง๋ ์ํฉ์ ์ํ๋๋ฐ ๋ชจ๋ฅด๊ฒ ์ ์๋๋ฉด ๋ ๋์ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ ์์ข
InventorySorter ๋ฅผ Inventory ๋ด๋ถ ํด๋์ค๋ก ๋ง๋ค๊ณ ๊ทธ๋ฅ ์ ๊ทผํด์ ์ด๋ค.
๊ทผ๋ฐ ์ธ๋ฒคํ ๋ฆฌ ์ ๋ ฌ์ ๋ทฐ์ ์์ญ์ธ๋ฐ Data๋ฅผ ์ง์ ๊ฑด๋๋ฆฌ์ง ์๋๊ฒ ์ข์ง ์์๊น?
๊ผญ ์ธ๋ฒคํ ๋ฆฌ์ ๋ ฌ๋ง ์๋์ฌ๋ ๋ค๋ฅธ ํด๋์ค์์๋ ๋น์ทํ ๊ณ ๋ฏผ๋ค์ ๋ง์ดํด์ ์ด์ ํ๋ฒ ์ง๋ฌธํด๋ดค์ ใณใณ
1๋ฒ ใ ใ