E D R , A S I H C RSS

Pluggable Selector

Pluggable Selector

€žฅ „‹จํ•˜ฒŒ Pluggable Behavior ตฌํ˜„ํ•˜Š” ฐฉฒ•€ ‹คํ–‰  ํ–‰™„  €žฅํ•ด†“Š” ฒƒด‹ค.  € ดฒƒ˜ ฐ˜€, ฆ‰ „œธŒํดž˜‹ ํ•œฒƒ„ ณดž.
~cpp 
class ListPane
{
public:
	Type printElement(Object& anObject) {
		return anObject.printString();
	}
};

class DollarListPane : public ListPane
{
public:
	Type printElement(Object& anObject) {
		return anObject.asDollarFormatString();
	}
};

class DiscriptionListPane : public ListPane
{
public:
	Type printElement(Object& anObject) {
		return anObject.desription();
	}
};

ดŸฐ‹œกœ ํ•˜‚˜˜ ฉ”†Œ“œงŒ „† ˜ค„ด”ฉํ•œ‹คฉด „œธŒํดž˜Šค“ค˜ €˜€ —†„ฒƒ ฐ™‹ค. ‰ฌšด ํ•ดฒฐ…€ ListPane ŠคŠคกœ € ” œ —ฐํ•˜ฒŒ งŒ“œŠ” ฒƒด‹ค. ‹คฅธ ธŠคํ„Šค“คด ‹คฅธ ฉ”„€ ณด‚ดฒŒ ํ•˜Š” ฒƒด‹ค.
~cpp 
class ListPane
{
private:
	void (ListPane::*printMessage)();
public:
	Type printElement(Object& anObject) {
		return anObject.perform(printMessage);
	}
	void initialize() {
		printMessage = printString;	// printString€ –ด”˜€— ตฌํ˜„˜–ด žˆ‹ค.
	}
};
€…„ : ทธƒฅ „œธŒํดž˜‹ํ•œฒƒณด‹ค –จ–ด„‹ค.
œ —ฐ„ : P.SŠ” ˆ˜‹  ฐฒด— ตฌํ˜„˜–ด• ํ•œ‹ค.
ํ™•žฅ„ : ํ•œ ˜คธŒ ํŠธงˆ‹ค ตœŒ€ ‘ฒˆŒ€งŒ “ฐž. ” งŽด “ฐฉด ํ”„กœทธžจ˜ ˜„€ ํ ค„‹ค. ” งŽด “ฐณ  ‹ถœฉด State Object “ฐŠ” ฒ•ด žˆ‹ค.

‹คํ–‰  selector €€Š” €ˆ˜ ถ”€ํ•œ‹ค. ด„ ’ค— Message งถ™ธ‹ค. selector ‹คํ–‰ํ•˜ธฐ ‰ฝฒŒ ํ•ดŠ” Composed Method งŒ“ ‹ค.

˜ˆ “ค–ด, –ด–ค „ฅฌ–ํ•œ ปดํฌ„ŒํŠธ ‹คฅธ ฒƒ˜ ƒŒ€ ธ €„— œ„˜‹œํ‚คณ  ‹ถ‹คฉด, ƒŒ€ ธ œ„˜ งŒ“ค–ดŠ” Pluggable Selector ‚ฌšฉํ•  ˆ˜ žˆ‹ค.(???)
~cpp 
class RelativePoint
{
public:
	static RelativePoint* centered(Figure& aFigure) {
		RelativePonit* rp = new RelativePoint;
		rp->setFigurenMessage(aFigure, center);		
	}
	void setFigurenMessage(Figure& aFigure, int aSymbol()) {
		figure = aFigure;
		locationMessage = aSymbol;
	}
};
ด œ ฐ˜ Pointฒ˜Ÿ ‚ฌšฉํ•  ˆ˜ žˆ‹ค.
~cpp 
Point RelativePoint::asPoint()
{
	return figure.perform(locationMessage);
}

Point RelativePoint::x()
{
	return asPoint().x();
}
ดŸฐ ‹œกœ ํ•˜ฉด CenteredRelativePoint, TopLeftRelativePointฐ™€ „œธŒํดž˜Šค งŒ“ค ํ•„š”€ —†‹ค. œ„—„œ centerŠ” ฉ”„€ ถ”€ํ•œ ฒƒฒ˜Ÿ, topLeftฉ”„€ ถ”€งŒ ํ•˜ฉด ˜Š” ฒƒด‹ค.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:00
Processing time 0.0126 sec