DOD (Data Oriented Design)에 대한 많은 기사를 읽었으며 이해하지만 DOD를 염두에 둔 OOP (Object Oriented Programming) 시스템을 설계 할 수 없습니다. OOP 교육이 저를 방해하고 있다고 생각합니다. 두 가지를 어떻게 혼합해야합니까? 뒤에서 DOD를 사용하면서 멋진 OOP 인터페이스를 만드는 것이 목표입니다.
나는 이것을 너무 보았지만별로 도움이되지 않았다 : https : //.com/questions/3872354/how-to-apply-dop-and-keep-a-nice-user-interface
답변
나는 말할 것 노엘 Llopis의 블로그는 아마도 객체 지향 프로그래밍 및 데이터 지향 설계의 조합에 가장 적합한 명령어입니다. 그는 DOD 용어의 창시자 중 하나이며 강력한 C ++ 프로그래머이며 자신의 스타일과 C ++의 OO 기능을 활용하는 방법에 대해 많은 것을 썼습니다.
Noel에 따르면, 그것들을 결합하는 핵심 요소를 불러야한다고 생각합니다.
- POD 및 비회원, 비 친구 기능을 가능한 많이 사용하십시오. 비회원, 비 친구 기능 은 캡슐화를 향상시키고 데이터, 데이터를 유지하기 때문에 데이터 지향의 핵심 부분입니다.
- 객체에 “임시”상태를 저장하지 마십시오. 임시 상태가 데이터를 막습니다. 성능을 위해 무언가를 캐시 해야하는 경우 비회원 비 친구 기능이 두 유형을 연결하는 is-a 또는 has-a 관계가 아닌 새로운 클래스에 속합니다.
- 상태 A 또는 상태 B에있을 수있는 개체는 피하십시오. 두 개체 중 하나는 A이고 다른 하나는 B입니다.
- 다형성 피하기, 가상 기능 피하기, 템플릿 피하기, 데이터가 구문 상으로 보이는 것을 피하십시오. 실제 동일성이 아니라 동일하게 .
국방부 선전에서 또 다른 큰 이름은 현재 Insomniac의 Mike Acton이지만, 그가 쓴 것을 읽는 것은 실제로 pro-OO (또는 데이터 지향적 인 경우 OO)가 아니라고 말할 것입니다.