You got it.Quote from ScoobyStoo:
OK, I can see now why you are prepared to accept the tight coupling and the maintenance overhead that this design approach brings. As you said earlier, it all depends on the required speed of execution and my needs are obviously not as great as yours. I have adopted a decoupled approach throughout with a fundamental principle being that I should be able to port the app to a different API with the minimum of hassle.
Your design decision has advantages obviously. But if you are trying to shave sub-milliseconds from your latency, you throw out most of this OO stuff when it slows you down, especially if it is in the heart of your market-data handling code or order handler that sees trillions of cycles over the course of a trading day.
Your language of choice also makes a huge difference. For example in heavy multi-threaded code, in Erlang vs C++/C# etc, you do lots of copies (correct functional programming), but you avoid locks. Your allocator then makes a huge difference. It is an interesting race...