The ways to deal with both are different. In particular, design patterns that are applicable to brownfield are:
- Adapter Pattern – adapt a component to another component using a different interface.
- Proxy Pattern – useful for controlling access to some resource, especially remote ones. Allows decoupling of the client from knowledge of connecting to the service.
- (Remote) Façade Pattern – to remove the complexity of some service by providing a simplified interface
- Data Transfer Object – useful in decoupling the views from the data access codes as well as reducing the number of remote invocations to the database layer.
- Data Access Layer – used to isolate the data access from the users’ interface.