728x90

 

์ด๋ฒคํŠธ ํ ํŒจํ„ด

 

๋ฉ”์‹œ์ง€๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ์‹œ์ ๊ณผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์ ์„ ๋””์ปคํ”Œ๋งํ•จ

๋ณดํ†ต์˜ ์ด๋ฒคํŠธ๋Š” ๋™๊ธฐ์ ์œผ๋กœ ์—ฐ์‚ฐ

๋™๊ธฐ์ (Synchronouse) ๋น„๋™๊ธฐ์ (Asynchronous)
์–ด๋–ค ์ž‘์—…์„ ์š”์ฒญํ–ˆ์„ ๋•Œ ๊ทธ ์ž‘์—…์ด ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹
์–ด๋–ค ์ž‘์—…์„ ์š”์ฒญํ–ˆ์„ ๋•Œ ๊ทธ ์ž‘์—…์ด ์ข…๋ฃŒ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€, ์š”์ฒญํ–ˆ๋˜ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๋ฉด ๊ทธ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹
์„œ๋ธŒ๋ฃจํ‹ด ๊ฐ„์— ๋ช…ํ™•ํ•œ ์‹คํ–‰ ์ˆœ์„œ ์กด์žฌ ์„œ๋ธŒ๋ฃจํ‹ด ๊ฐ„์— ๋ช…ํ™•ํ•œ ์‹คํ–‰ ์ˆœ์„œ ์กด์žฌํ•˜์ง€ ์•Š์Œ

 

์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๊ณ , ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉˆ์ถฐ๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๋‚˜์˜จ ๊ฒƒ์ด ์ด๋ฒคํŠธ ํ ํŒจํ„ด์ด๋‹ค

 

์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ, ๋ช…๋ น์„ ๋‹ด์•„ ๋‘˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•œ๋ฐ Queue์— ์ด๋ฒคํŠธ๋ฅผ ๋‹ด์•„๋‘”๋‹ค

 

ํŠœํ† ๋ฆฌ์–ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

 

๊ทธ๋ฆฌ๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰์ด ๋˜๊ธธ ์›ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

์˜ˆ๋ฅผ ๋“ค์–ด ์—…์ ์„ ๋‹ฌ์„ฑํ–ˆ์„ ๋•Œ,

์—…์  ๋‹ฌ์„ฑ์— ๋Œ€ํ•œ ๋ฐ˜์‘๋“ค์ด ๋‚˜ํƒ€๋‚˜์•ผํ•จ

๋งŒ์•ฝ ์—…์  ๋‹ฌ์„ฑ์ด Popup๊ณผ Sound๋ฅผ ์ถœ๋ ฅํ•˜๋Š”๋ฐ,

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์—…์ ์„ ํ•œ๋ฒˆ์— ๋‹ฌ์„ฑํ–ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น ์—…์  ๋‹ฌ์„ฑ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋™์‹œ์ ์œผ๋กœ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ FIFO ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฒคํŠธ ํ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค

ํ์— ๋„ฃ๋Š” ์ด์œ ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค

์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด๊ณ , ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉˆ์ถฐ๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค

์ด๋ฒคํŠธ ํ๋Š” ๊ด€์ฐฐ์ฐจ ํŒจํ„ด์˜ ๋น„๋™๊ธฐํ˜•

 

๊ด€์ฐฐ์ž, ๋ช…๋ น ํŒจํ„ด ์ด๋ฒคํŠธ ํ ํŒจํ„ด
๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ณณ๊ณผ ๋ฐ›๋Š” ๊ณณ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์‹œ์ ๊ณผ ๋ฐ›๋Š” ์‹œ์ ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

 

 

์ฃผ์˜์‚ฌํ•ญ

  1. ๋ชจ๋“  ์ด๋ฒคํŠธ, ๋ฉ”์‹œ์ง€ ์‹œ์Šคํ…œ์€ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๊ฐ€ ์ƒ๊ธฐ๋ฉด ์•ˆ๋จ
  2. ์œ ๊ธฐ์ ์œผ๋กœ ๊ณ„์† ์—ฐ๊ฒฐ๋˜๋Š” ์ด๋ฒคํŠธ๋“ค์„ ๋„ฃ์œผ๋ฉด ์ด๋ฒคํŠธ ํ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง
  3. ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ ๋‚ด์—์„œ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š์•„์•ผํ•จ

 

 

 

๋ฐ˜์‘ํ˜•

'๊ณต๋ถ€ > Design Pattern' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์ด๋ž€?  (0) 2021.12.15
728x90

๋ณดํ†ต ์ดˆ๋ณด ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋“ค์ด ์œ ๋‹ˆํ‹ฐ์—์„œ C#์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ํ•œ๋ฒˆ ์„ค์ •ํ•ด๋†“์€ ์„ค์ •๋“ค์„ ๋Œ์–ด๋‹ค ์“ฐ๋ ค๊ณ  ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.(๋ณธ์ธ ๊ฒฝํ—˜๋‹ด..)

์ตœ๊ทผ ๋ฉด์ ‘์—์„œ ์‹ฑ๊ธ€ํ†ค๊ณผ ์ „์—ญ๋ณ€์ˆ˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ๋Œ€๋‹ตํ•˜์ง€ ๋ชปํ•˜์˜€๊ธฐ๋•Œ๋ฌธ์— ๋ธ”๋กœ๊ทธ๋กœ ํ•œ๋ฒˆ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

์‹ฑ๊ธ€ํ†ค์ด๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ตœ์ดˆ๋กœ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.

์‹ฑ๊ธ€ํ†ค๊ณผ ์ „์—ญ๋ณ€์ˆ˜๋Š” ์ตœ์ดˆ๋กœ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๊ทธ ์ž์›์„ ๋Œ์–ด๋‹ค ์“ด๋‹ค๋Š” ์ ์—์„œ ๋น„์Šทํ•œ๋ฐ ๋‘˜์€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

 

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด๊ณผ ์ „์—ญ๋ณ€์ˆ˜์˜ ์ฐจ์ด์ 

 

1. ์ƒ์„ฑ์‹œ์ 

์ „์—ญ๋ณ€์ˆ˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ ์ƒ์„ฑ

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ initialize๋˜๋ฉด์„œ ์ƒ์„ฑ

 

2. ์ž์›ํ• ๋‹น

์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ž์›์˜ ์–‘์ด ์—„์ฒญ๋‚˜๊ฒŒ ํฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•จ(ํŠน์ • ์‹œ์ ์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ์—„์ฒญ๋‚œ ๋‚ญ๋น„)

์‹ฑํดํ†ค ํŒจํ„ด์€ ์‚ฌ์šฉํ•  ๋•Œ ์ž์›์„ ํ• ๋‹นํ•˜๊ณ  ์ž์‹ ์ด ์›ํ•  ๋•Œ ์ž์›์„ ํ•ด์ œ ๊ฐ€๋Šฅ

 

์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์˜ ๋‹จ์ 

- ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅ(private ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ)

- ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋งŒ๋“ค๋ฉด ์•ˆ๋จ(์ƒํƒœ๊ฐ€ ๊ณต์œ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋งค์šฐ ์œ„ํ—˜ํ•จ, ์œ ์ผํ•ด์•ผํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ•จ)

- ์‹ฑ๊ธ€ํ†ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ๊ณผ ์‹ฑ๊ธ€ํ†ค ํด๋ž˜์Šค ์‚ฌ์ด์— ์˜์กด์„ฑ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜์„œ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ ธ์„œ ์ˆ˜์ • ๋ฐ ๋‹จ์œ„ํ…Œ์ŠคํŠธ์˜ ์–ด๋ ค์›€์ด ์ƒ๊ธฐ๊ฒŒ ๋จ

- ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ง€์–‘๋˜์–ด์•ผ ํ•  ๋ชจ๋ธ(์œ„์™€ ๊ฐ™์ด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง€๊ธฐ ๋–„๋ฌธ)

- ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‘๊ฐœ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

 

 

Unity C#์—์„œ ์“ฐ๋Š” ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class manager : MonoBehaviour
{
    //instance๋ฅผ static์œผ๋กœ ์„ ์–ธ
    private static manager instance = null;
 
    //์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋ ๋•Œ initialization ๋ถ€๋ถ„์—์„œ ์ œ์ผ ๋จผ์ € ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜
    void Awake(){
        //๋งŒ์•ฝ instance๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ
        if(instance==null){
            instance=this;
        }
    }
 
    //๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ํ˜ธ์ถœํ• ์ˆ˜ ์žˆ๋„๋ก static ํ”„๋กœํผํ‹ฐ ์„ ์–ธ
    //ํ”„๋กœํผํ‹ฐ : ํ•„๋“œ(๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„)์™€ ๋ฉ”์†Œ๋“œ ๊ฐ„ ๊ธฐ๋Šฅ์˜ ์ค‘๊ฐ„์ธ ํด๋ž˜์Šค ๋ฉค๋ฒ„์˜ ํŠน์ˆ˜ํ•œ ์œ ํ˜•
    public static manager Instance
    {
        get
        {
            if (null == instance)
            {
                return null;
            }
            return instance;
        }
    }
}
cs

 

๋ฐ˜์‘ํ˜•

'๊ณต๋ถ€ > Design Pattern' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ด๋ฒคํŠธ ํ ํŒจํ„ด (Event Queue Pattern)  (0) 2024.12.29

+ Recent posts