In the object-oriented software community, an architectural pattern defines a fundamental structural organization or schema for a software system. It provides a set of predefined subsystems, specifies ...