Best way to defining scripts within a list inside the editor?

So the Faction Manager script has a list of another script called Faction. Is there any way that I can define the Faction scripts within the Faction Manager script, or is attaching multiple Faction scripts to the same object as the Faction Manager script is attached to like in the image the best way to do this?

You can define Faction as just a regular class with the [Serializable] attribute rather than a component (i.e. don’t inherit from MonoBehvaiour);

[System.Serializable]
public class Faction
{
    public FactionEnum faction;
    public Town[] ownedTowns;
    public Army[] ownedArmies;
}