Фабрика выглядит так.
public interface Service {}
public class AuthorizationService implements Service {}
public class UserMenuService implements Service {}
public class AdminMenuService implements Service {}
public class ServiceFactory {
public static final int AUTHORIZATION = 1;
public static final int USERMENU = 2;
public static final int ADMINMENU = 3;
public static Service create(int id) throws Exception {
switch (id) {
case AUTHORIZATION: return new AuthorizationService();
case USERMENU: return new UserMenuService();
case ADMINMENU: return new AdminMenuService();
default: throw new Exception("service factory wrong id:" + id);
}
}
}
Потом работаете по общим методам объявленным в интерфейсе. Когда нужны конкретные методы реализации, то используется instanceof. Если instanceof используется слишком часто, то интерфейс и фабрика лишние абстракции.
Может нужен builder, а может нужна абстрактная фабрика, а может 3 отдельные фабрики.