The example given doesn't seem like it would benefit from a centralized approach. What you're wanting is basically:
- On placing the pipe, check for neighboring machines and store a reference
- When the pipe inserts an item, call machine.NotifyInventoryChanged(), a function you added to the machine class
That's something those two classes can handle between them, without getting any larger systems involved.
Or alternately, this could make use of the existing Inventory.SlotModified(), for compat with other mods that might add their own pipes or machines.
(Hoping you find this helpful!)