Using multiple components or using single one as manager?

Hello guys, i am new to unity although i have strong programming background from Assembler to C++ some of the Unity workflow is kind of unfamiliar. Most of the advanced implementation patterns possible i gathered from various sources but there are still some i am curious about so bear with me.

Now to the problem, what is more feasible using multiple components on a game object or single one that instantiates/handles other functionality through special classes.

For example lets say i have a generic Enemy what i would do for the sake of decoupling is make EnemyState, EnemyMotor, EnemyAI… classes where State handles its state, hp etc. motor is handling its motion etc.

Should i make all these as separate components and attach them to the enemy or its better to make a single component lets call it EnemyController that will instantiate all the others not necessarily as components and manage everything through it?

Honestly i find the second option more to my liking, not only its more readable its also way more transparent when it comes to reusing classes outside of Unity or vice versa. The downside is overhead in referencing/sending data that would be inherent going the component route.

Thank you.

I usually try to use only one script attached to each object, unless some part of the code can be used by several objects. Using the Enemy example: if you have 3 different enemies, for instance, you can use a common script to take care of damage, and others specific to each monster to implement the AI control, movement, attack etc.

Communication between different scripts is somewhat complicated: you must use GetComponent to get a reference to the other script, then use this reference to access its variables or functions. It’s slower than accessing variables inside the same script - and a lot more complicated, for sure.

An additional reason to concentrate things in one script: after some time, your project will become crowded with lots of scripts - much of them you just can’t remember exactly for what were written!