Disclaimer: I'm not too familiar with Android.
I wouldn't optimize for permgen space unless there is a good reason for it. It seems premature optimization premature optimization. "Permgen stores the methods of a class (including the bytecodes)" in all of your cases so I do not think that only the class definition headers would cause too much overhead.
From the three option the third is the most OOP (+1 to Donald). If it's possible try to make these classes static inner classes (Effective Java, 2nd Edition, Item 22: Favor static member classes over nonstatic). If they use fields from the parent class consider passing a context object to them instead of direct access. It would result looser coupling. (Disadvantages of coupling on Wikipedia)
Disclaimer: I'm not too familiar with Android.
I wouldn't optimize for permgen space unless there is a good reason for it. It seems premature optimization. "Permgen stores the methods of a class (including the bytecodes)" in all of your cases so I do not think that only the class definition headers would cause too much overhead.
From the three option the third is the most OOP (+1 to Donald). If it's possible try to make these classes static inner classes (Effective Java, 2nd Edition, Item 22: Favor static member classes over nonstatic). If they use fields from the parent class consider passing a context object to them instead of direct access. It would result looser coupling. (Disadvantages of coupling on Wikipedia)
Disclaimer: I'm not too familiar with Android.
I wouldn't optimize for permgen space unless there is a good reason for it. It seems premature optimization. "Permgen stores the methods of a class (including the bytecodes)" in all of your cases so I do not think that only the class definition headers would cause too much overhead.
From the three option the third is the most OOP (+1 to Donald). If it's possible try to make these classes static inner classes (Effective Java, 2nd Edition, Item 22: Favor static member classes over nonstatic). If they use fields from the parent class consider passing a context object to them instead of direct access. It would result looser coupling. (Disadvantages of coupling on Wikipedia)
Disclaimer: I'm not too familiar with Android.
I wouldn't optimize for permgen space unless there is a good reason for it. It seems premature optimization. "Permgen stores the methods of a class (including the bytecodes)" in all of your cases so I do not think that only the class definition headers would cause too much overhead.
From the three option the third is the most OOP (+1 to Donald). If it's possible try to make these classes static inner classes (Effective Java, 2nd Edition, Item 22: Favor static member classes over nonstatic). If they use fields from the parent class consider passing a context object to them instead of direct access. It would result looser coupling. (Disadvantages of coupling on Wikipedia)