_observers as $observer) { $return[] = $observer->update($this->_state); } return $return; } function attach(&$observer) { if (is_object($observer)) { $class = get_class($observer); foreach ($this->_observers as $check) { if (is_a($check, $class)) { return; } } $t..
샘플 /** * == 객체 지향 원칙 == * 바뀌는 부분을 캡슐화 한다. * 상속보다는 구성을 활용한다. * - 이유는 !!! * 구현이 아닌 인터페이스에 맞쳐서 프로그래밍한다. * 서로 상호작용하는 객체 사이에는 가능하면 느슨하게 결합하는 디자인을 사용한다. * 클래스는 확장에 대해서는 열려 있지만 반면에 변경에 대해서는 닫혀있어야한다. * 추상화된 것에 의존하라. 구상 클래스에 의존하지 않도록 한다. * 친한 친구들하고만 연락한다. * 먼저 연락하지 마세요. 저희가 연락 드리겠습니다. * 어떤 클래스가 바뀌게 되는 이유는 한가지 뿐이어야 한다. * Interface Duck */ interface Duck { function quick(); function fly(); } class JDuck im..
/*// 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 개체를 구상 클래스를 지정 하지 않고도 생성할 수 있습니다// 추상 팩토리 패턴은 본격적으로 인터페이스와 업 캐스팅을 통해서 객체 자동생성을 구현하게 되고,// 그것을 통해 생산성과 직접적인 연관을 가지게 됩니다. 결국 높은 객체 생산 효율을 추구하는 디자인 패턴인 것이죠.///*이어지는 피자가게 프랜차이즈 스토리에 대한 설명을 약간 해야 할 것 같습니다.객체마을 피자가게가 인기가 올라가자 뉴욕과 시카고에 분점을 내기로 한 것까지가 지난번 팩토리메서드의 이야기였습니다.그런데 일부 분점에서는 자잘한 재료를 더 싼 재료로 바꿔서 원가를 줄이고 마진을 올리고 있다는 정보를 들어왔습니다.이런 현상이 심해지면 객체마을 피자 브랜드의..
PHP COOK BOOK에서 알아두면 좋을듯한 내용 정리하기 1. String \n 새행 ( ASCII 10 )\r 캐리지 리턴 ( ASCII 13 )\t Tab ( ASCII 9)\\ BackSlash\$ 달러기호\" Double Quote\0 through \777 10진수\x0 through \xFF 16진수 print "\$\061\060.\x32\x35"; => $10.25 echo my day: [1] => get up [2] => get dress [3] => eat toast)$words = preg_split('/ x /i','31 inches x 22 inches x 9 inches'); Array( [0] => 31 inches [1] => 22 inches [2] => 9 inche..