Q:

Most effective way to perform dynamic list of actions?

I have a huge list of predefined game objects with different actions they do. What is the best (in terms of code simplicity and runtime performance) way to store, dynamically refresh and execute their actions after placement them in game in runtime?
Let's say GO1 every game turn creates copy of itself nearby. GO2 destroys all GO3's. GO3 adds resources. GO4 removes resources on its creation, etc. Each turn player instantiates one object from the list in the game world and after that they start to execute their actions. Player can build multiple objects of the same type, and there are hundreds of different gameobjects with hundreds of different types of actions. Objects can't change their actions in the runtime, for the sake of simplicity of this question. Each action can be very heavy on processor - for example, look through each other object. Having those be all executed at the same time is a problem itself.
Some ways I can think of (but having very little experience with the subject, I have no idea of their actual effectiveness):

Assign every object a method on its own. Object initialisation list
  becomes very complicated and you can't really store it in xml-like
  file.
Initialise objects with some kind of lambda or Action<> literal
  parameter. I can't imagine this is okay in terms of game resources,
  and probably is a hell for debugging.
Initialise objects with a string of parameters. Simple to
  initialise, but parsing requires extra processor time.
Initialise object with a struct-like list of actions. Simple to
  initialise, but number of childs in said mega-struct will become
  extremely big.
Hardcode a mega-function with a lot of calls like "if (objectID ==
  GO2) then do" or cases. Sounds stupid, probably is.
Unity-way: assign each instantiated object an own script, pass
  script name on initialisation, similar to p. 2. Most simple way, but
  can't be easy for a machine to execute. Also, changing object
  parameters will be complicated.

It should not matter, but I'm using Unity3D with C#.

A:

The Unity way to do this would be to implement each of these object behaviors as an own MonoBehaviour. Create a prefab for each object type and assign the appropriate MonoBehaviour to it. When a player spawns one of these object, instantiate the respective prefab.

