๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

์ผ„ํŠธ๋ฐฑ์˜ ๊ตฌํ˜„ ํŒจํ„ด 7์žฅ - ํ–‰์œ„ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ ์„œ์ /์ผ„ํŠธ๋ฐฑ ๊ตฌํ˜„ ํŒจํ„ด

์ผ„ํŠธ๋ฐฑ์˜ ๊ตฌํ˜„ ํŒจํ„ด 7์žฅ - ํ–‰์œ„

sehaan 2023. 10. 2. 15:16

๋ฉ”์‹œ์ง€

๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด, ๋ฐœ์‹ ์ž์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์ง€๋งŒ ์ˆ˜์‹ ์ž์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์‹œ์ €๋Š” ๋‹น์žฅ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์„ธ๋ถ€ ๊ตฌํ˜„์ด ์กด์žฌํ•œ๋‹ค ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ๋‹ค. (์บก์Šํ™”)

 

function() {
	input();
    process();
    output();
}

 

์„ ํƒ ๋ฉ”์‹œ์ง€

์„ ํƒ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…์‹œ์  ์กฐ๊ฑด๋ฌธ์˜ ์‚ฌ์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณผ๋„ํ•œ ์„ ํƒ๋ฉ”์‹œ์ง€์˜ ์‚ฌ์šฉ์€ ๊ฐ€๋…์„ฑ์„ ์ €ํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

public void display(Subject subject, Brush brush) {
	brush.display(subject);
}

 

๋”๋ธ” ๋””์ŠคํŒจ์น˜

2๊ฐœ์˜ ์„ ํƒ ๋ฉ”์‹œ์ง€๋ฅผ ์ง๋ ฌ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

https://www.youtube.com/watch?v=s-tXAHub6vg&loop=0 

 

๋ถ„๋ฆฌ ๋ฉ”์‹œ์ง€

์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋ณต์žกํ•œ ์•Œ๊ณ ์ฆ˜์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋ชจ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

๋˜๋Œ๋ฆผ ๋ฉ”์‹œ์ง€

๋„์šฐ๋ฏธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์†Œ๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

void process() {
	helper.process(this);
}

void compute() {
	input();
    process(helper);
    output();
}

 

์ดˆ์ฒญ ๋ฉ”์‹œ์ง€

๋กœ์ง์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋กœ ์„ ์–ธํ•ด์„œ ์ถ”์ƒ ๋ฉ”์‹œ์ง€์ž„์„ ๋ถ„๋ช…ํžˆํ•˜๋ผ

 

์„ค๋ช… ๋ฉ”์‹œ์ง€

 

highlight ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

highlight() {
	reverse();
}

 

๋˜ ์ฃผ์„์„ ๋ถ™์ด๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค,.

flags |= LOADED_BIT; // ๋กœ๋“œ ๋น„ํŠธ๋ฅผ ์„ค์ •

setLoadedFlag() {
	flags |= LOADED_BIT;
};

์ด๋Ÿฌํ•œ ํ•œ์ค„์งœ๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ๋•๋Š”๋‹ค.

 

์˜ˆ์™ธ ํ๋ฆ„

์˜ˆ์™ธ ํ๋ฆ„์€ ์ˆ˜ํ–‰ ๋นˆ๋„๊ฐ€ ๋‚ฎ๊ณ  ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ, ์ฃผ์š” ํ๋ฆ„์— ๋น„ํ•ด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ์ค‘์š”์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

์ฃผ๋ฃŒ ํ๋ฆ„์€ ๋ช…๋ฃŒํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ณ  ์˜ˆ์™ธ ํ๋ฆ„์€ ์ฃผ์š” ํ๋ฆ„์˜ ๋ช…๋ฃŒ์„ฑ์„ ํ›ผ์†ํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ช…๋ฃŒํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋ผ !

 

๋ณดํ˜ธ์ ˆ

๋ณดํ˜ธ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณต์žกํ•œ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

void conpute() {
	Server server = getServer();
    if (server != null) {
    	Client client = server.getClient();
        if(client != null) {
        	....
        }
    }
}

 

void conpute() {
	Server server = getServer();
    if (server != null)
    	return;
    Client client = server.getClient();
    if(client != null)
    	return;
    ...
}

 

์˜ˆ์™ธ

๋ฉ”์†Œ๋“œ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ฉด ๋ฉ”์†Œ๋“œ์˜ ์„ค๊ณ„์™€ ๊ตฌํ˜„์˜ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€๋Šฅํ•˜๋ฉด ์ˆœ์ฐจ์  ๊ตฌ๋ฌธ , ๋ฉ”์‹œ์ง€ , ๋ฃจํ”„ ์ œ์–ด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์ œ์–ด ํ๋ฆ„์ด ์•ˆ๋  ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

 

์˜ˆ์™ธ ์ „๋‹ฌ

ํ•˜์œ„ ์ˆ˜์ค€์˜ ์˜ˆ์™ธ๋Š” ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

ํ•˜์œ„ ์ˆ˜์ค€์˜ ์˜ˆ์™ธ๋ฅผ ์ƒ์œ„ ์ˆ˜์ค€ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•˜๋ผ