Text this: The impact of flyweight and proxy design patterns on software efficiency: an empirical evaluation