zoukankan      html  css  js  c++  java
  • 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();
    

    即可

  • 相关阅读:
    单词篇:(单词应用10~11)
    单词篇:(单词识记11)
    单词篇:(单词识记10)
    单词篇:(单词识记8~9)
    单词篇:(单词应用9)
    单词篇:(单词识记8)
    单词篇:(单词应用6~7)
    单词篇:(单词识记7)
    单词篇:(单词识记6)
    单词篇:(单词应用4~5)
  • 原文地址:https://www.cnblogs.com/heenhui2016/p/10964268.html
Copyright © 2011-2022 走看看