- Abstract Factory Design pattern is much similar to Factory design pattern
- The only difference is that the Factory pattern the is only Interface method that returns a Concrete object where as in Abstract Factory Pattern there multiple methods that return multiple objects
Example :
package designpattern; enum OS{ LINUX,WINDOWS,MAC; } interface UI{ public String getTextEditory(); public String getBrowser(); public String getPhotoEditor(); } class Linux implements UI{ public String getTextEditory() { return "VI Editor"; } public String getBrowser() { return "Chromium"; } public String getPhotoEditor() { return "ShortWell"; } } class Windows implements UI{ public String getTextEditory() { return "Notepad"; } public String getBrowser() { return "IE"; } public String getPhotoEditor() { return "Paint"; } } class Mac implements UI{ public String getTextEditory() { return "CityMac"; } public String getBrowser() { return "Safari"; } public String getPhotoEditor() { return "Pixlr"; } } class UIFactory{ public static UI getUIInstance(OS os) { UI ui = null; switch(os) { case LINUX: ui = new Linux(); break; case WINDOWS: ui = new Windows(); break; case MAC: ui = new Mac(); break; } return ui; } } public class AbstractFactoryDemo { public static void main(String[] args) { UI ui = UIFactory.getUIInstance(OS.WINDOWS); System.out.println(ui.getTextEditory()); System.out.println(ui.getBrowser()); System.out.println(ui.getPhotoEditor()); } }
Reference :