Recently, I've been programming a simple application on Swing, ad I did it the following way:
1. Create the abstract App class, who extends JFrame and implements various listeners. Initialize all the GUI in that class, assign this as a listener to whatever needs to be listened, but not to implement the listeners' methods.
2. Create the abstract AppBehaviour class, who extends App class. Implement all the listeners' methods there, but "not too detailed". That is, we create additional abstract methods to encapsulate some operations, like downloading pictures from the internet (say, abstract downloadNextPicture()). And in listeners' methods we just provide a certain logics for these methods (say, if we are connected to the Internet, and time is less then 13:00, than call downloadNextPicture()).
3. Create the concrete AppActions class who extends AppBehaviour class and implements all the abstract methods from this class.
Can you provide your thoughts about the ease of understanding and maintenance of this pattern? What are it's benefits and cons?