3. (a) Explain the main differences between creational, structural and behavioural software design patterns. [7 Marks]...