you are developing a program in java. you have created an interface with multiple implementations. some of the methods of your interface don't need direct access to the private data, so you code those as default methods in your interface, and don't override them in the implementations. other methods do need private data, so they are abstract in interface and provided in each implementation. what design pattern are you using?