Java 工厂模式登陆系统实现

没有工厂模式

设定一个登陆系统

UserServiceImp.java

public class UserServiceImp {
    public boolean login(String username, String pw) {
        if(username.equals("abc")&&pw.equals("123")){
            return true;
        }else{
            return false;
        }
    }
}

Test1.java

import java.util.Scanner;
public class Test1 {

    public static void main(String[] args) {
        UserServiceImp userServe = new UserServiceImp();
        Scanner scanner =  new Scanner(System.in);
        System.out.println("Please input username:");
        String uname = scanner.nextLine();
        System.out.println("Please input user password");
        String pw = scanner.nextLine();
        boolean rel =  userServe.login(uname, pw);
        System.out.println(rel==true?"Success!":"Falsed!");
    }
}

但是如果UserServiceImp.java没有写好,Test1.java就不可以调用,且修改比较麻烦。

工厂模式

简单工厂模式,分离调用者和实现者:

建立一个interface: UserService.java

public interface UserService {
    boolean login(String username, String password);
}

建立一个工厂: UserServiceFactory.java

public class UserServiceFactory {
    public static UserService getUserService(){
        return new UserServiceImp();
    }
    
}

修改Test.java中的代码:

UserService userServe = UserServiceFactory.getUserService();

这样创建userServe对象的时候,就通过UserService 接口,和UserServiceFactorygetUserService()来间接创建了。

修改被调用的类

若有UserServiceImp2.java, 则只用修改facotry中的代码即可。

即,创建UserServiceimp2.java

public class UserServiceimp2 implements UserService{

    @Override
    public boolean login(String username, String password) {
        if (username.equals("aaa")&&password.equals("111")) {
            return true;
        } else {
            return false;
        }
    }

    
}

修改factory代码:

return new UserServiceimp2();

即可

posted @ 2018-11-10 20:39  何大卫  阅读(588)  评论(0编辑  收藏  举报