![](https://habrastorage.org/getpro/habr/post_images/570/e79/e73/570e79e73ed38f63467392e937ed9e13.jpg)
Иногда бывает интересно изучить архитектуру какого либо изделия, и посмотреть как оно устроено. Вот бывало разберешь часы, а обратно собрать не можешь… Но в отличии от часов программные продукты при доступе к исходникам можно разобрать, и собрать. А найденные решения применять уже в своей практике.
Когда у меня возникла необходимость в создании
CxxMock, о котором я писал в статье
CxxMock — Mock-объекты в C++, я разобрал принцип действия похожего
GoogleMock. Или еще раньше разобрал основную идею c10k сервера
mathopd, что последующих проектах позволило мне лучше маневрировать в проектировании архитектуры.
Поэтому, я расскажу об основных концепциях и за счет которых работает CxxMock. И которые было интересно придумывать. Возможно, некоторые трюки покажутся вам простыми, а другие смогут вам помочь в вашей практике.