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();

即可

转载于:https://www.cnblogs.com/heenhui2016/p/10964268.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值