Simple Factory mode Abstract Factory mode Builder mode Factory Method mode Prototype mode Singleton mode Registry of Singleton Mode Abstract Factory ModelWe talked about the simple factory model above, where we divide movies into action movies and love movies, so there are cheap and expensive movies. At this time, the audience asked me to watch only cheap action movies, some watch expensive movies, so taking photos of our simple factory is not enough.
What should we do? The audience requirements become more complex, so we only need to make the factory more complex. The IFoxFilmFactory is divided into two departments: the Department that produces expensive movies (ExpensiveFilmFactory ), department that produces cheap movies (economy filmfactory ). in this case, the classification of movies is also complicated. action movies (IActionMovie) have ExpensiveActionMovie, while economic actionmovie and ILoveMovie have ExpensiveLoveMovie ), there are cheap (economical lovemovie ).
The following class diagram
IActionMovie interface-action movies
public interface IActionMovie { public void playAction() ;}
ILoveMovie interface-Love Film
public interface ILoveMovie { public void playLove() ;}
ExpensiveActionMovie-expensive action movies
Public class ExpensiveActionMovie implements IActionMovie {@ Override public void playAction () {System. out. println (expensive-Hum haha !); }}
Economical actionmovie-cheap action movies
Public class economy micactionmovie implements IActionMovie {@ Override public void playAction () {System. out. println (cheap-Hum haha !); }}
ExpensiveLoveMovie class-expensive love movies
Public class ExpensiveLoveMovie implements ILoveMovie {@ Override public void playLove () {System. out. println (expensive-love Tiger Oil !); }}
Economic miclovemovie-cheap love films
Public class economical miclovemovie implements ILoveMovie {@ Override public void playLove () {System. out. println (cheap-love Tiger Oil !); }}
IFoxFilmFactory interface -- total factory of Fox
public interface IFoxFilmFactory { public IActionMovie getActionMovie() ; public ILoveMovie getLoveMovie() ;}
ExpensiveFilmFactory class-Department for producing expensive movies
public class ExpensiveFilmFactory implements IFoxFilmFactory { @Override public IActionMovie getActionMovie() { return new ExpensiveActionMovie(); } @Override public ILoveMovie getLoveMovie() { return new ExpensiveLoveMovie(); }}
Economy filmfactory-Department for producing cheap movies
public class EconomicFilmFactory implements IFoxFilmFactory { @Override public IActionMovie getActionMovie() { return new EconomicActionMovie(); } @Override public ILoveMovie getLoveMovie() { return new EconomicLoveMovie(); }}
AudienceClient class-audience
Public class AudienceClient {public static void main (String [] args) {IFoxFilmFactory fox1 = new Economy micfilmfactory (); fox1.getActionMovie (). playAction (); fox1.getLoveMovie (). playLove (); IFoxFilmFactory fox2 = new ExpensiveFilmFactory (); fox2.getActionMovie (). playAction (); fox2.getLoveMovie (). playLove ();/* print * cheap-Hum haha! * Cheap-love tiger oil! * Expensive-hum, haha! * Expensive-love tiger oil! */}}
16:50:20
Brave, Happy, Thanksgiving!