一个登陆接口,两个实现类,一个工厂类,一个测试类
工厂类
public class LoginManager {public static Login factory(String type){if(type.equals("password")){return new PasswordLogin();}else if(type.equals("passcode")){return new DomainLogin();}else{/** * 这里抛出一个自定义异常会更恰当 */throw new RuntimeException("没有找到登录类型");}}}
简单工厂模式的优点
模式的核心是工厂类。这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个登录验证类的实例,而调用者则可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的登录方式的时候无需修改调用者。
简单工厂模式的缺点
这个工厂类集中了所以的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。
