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 接口,和UserServiceFactory的getUserService()来间接创建了。
修改被调用的类
若有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();
即可
Java 工厂模式登陆系统实现的更多相关文章
- java工厂模式
		(1)概念大白话:java工厂模式就是客户端(main函数)要创建对象觉得麻烦就让另外一个叫工厂的类帮它创建,然后自己每次要创建对象就叫工厂帮它弄,举个例子,在没有工厂这个"手下" ... 
- Java工厂模式解耦 —— 理解Spring IOC
		Java工厂模式解耦 -- 理解Spring IOC 最近看到一个很好的思想来理解Spring IOC,故记录下来. 资源获取方式 主动式:(要什么资源都自己创建) 被动式:(资源的获取不是我们创建, ... 
- Java 工厂模式(一)— 抽象工厂(Abstract Factory)模式
		一.抽象工厂模式介绍: 1.什么是抽象工厂模式: 抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态,抽象工厂模式向客户端提供一个接口,使得客户端在不知道具体产品的情类型的情况下,创建 ... 
- java 工厂模式  转载
		下面介绍三种设计模式,简单工厂模式,工厂方法模式,抽象工厂模式 思考如下场景: 有一天,林同学准备去买笔记本,他到商城发现有两款电脑他特别喜欢, 一款是 Macbook Pro, 另一款是 Surfa ... 
- java 工厂模式 从无到有-到简单工厂模式-到工厂方法模式-抽象工厂模式
		工厂模式定义(百度百科): 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见.因为工 ... 
- Java学习笔记——Java工厂模式之简单工厂
		package com.app; import java.util.Date; /* * 工厂模式:简单工厂.工厂方法.抽象工厂 * * */ public class Test0718_Factor ... 
- JAVA - 工厂模式
		1. 简单工厂违背OCP(Open Close Principle)原则 , 即对增加开放,对修改关闭.如果要符合OCP原则,要针对接口编程. //简单工厂模式,违反了OCP原则 public cla ... 
- Java 工厂模式(一)— 工厂方法(Factory Method)模式
		一.工厂方法(Factory Method)模式: 1.什么是工厂方法模式? 工厂方法模式是类的创建型模式,又叫做虚拟构造子模式或者多态工厂模式.它的意义是创建产品对象的工厂接口,将实际创建工作推迟到 ... 
- Java 工厂模式(一)— 简单工厂模式
		一.什么是工厂模式: Java中的工厂模式主要是用来将有大量共同接口的类实例化.工厂模式可以动态的决定将哪一个类实例化,不必事先知道要实例化哪个类,将类的实例化的主动权交给工厂而不是类本身.我们常见的 ... 
随机推荐
- C#使用throw和throw ex的区别(转)
			使用throw和throw ex的区别 之前,在使用异常捕获语句try...catch...throw语句时,一直没太留意几种用法的区别,前几天调试程序时无意中了解到几种使用方法是有区别的,网上一查, ... 
- sql ,类型转换,日期截取格式
			字符型 转换成整型 CONVERT(int ,字段) 只取年月日格式 CONVERT(varchar(10), ZB.drive_time, 120 ) SELECT CONVERT(VARCHAR, ... 
- XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结(转载)
			转载自 https://blog.csdn.net/baidu_24024601/article/details/51957270 之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让 ... 
- 基于Ambari的WebUI部署Hive服务
			基于Ambari的WebUI部署Hive服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari服务 博主推荐阅读: https://www.cnblogs.com ... 
- 18 react  react-redux 的编写 TodoList
			1. 安装 react-redux yarn add react-redux 2. react-redux 编写 TodoList 使所有子组件 都能使用 store #index.js import ... 
- PWC6199:Generated servlet error:Only a type can be imported. org.apache.jasper.tagplugins.jstl.core.ForEach resolves to a package
			<%@ import="org.apache.jasper.tagplugins.jstl.core.ForEach"%> 去掉这条语句,就不报错了.所以问题就出在这里 ... 
- VUE.js入门学习(3)-深入理解VUE组建
			1.使用组件的细节点 (1)is="模版名" (2)在子组建定义data的时候,data必须是一个函数,而不能是一个对象,每个子组建都有自己的数据存储.之间不会相互影响. (3)操 ... 
- VB 正则匹配中的括号
			1.正则表达式失灵(excel2016) 案列:提取一段字符串中数字并求和 Function sumnum(x) Dim regexp As Object Set reg = CreateObject ... 
- cat <<EOF> file
			.多行导入文件(新建文件或者覆盖文件内容) cat << EOF > abcd.txt Hello! This is a test file! Test for cat and ... 
- jenkins+saltstack+pipeline 部署springcloud 多模块jar包
			在jenkins上安装salt-master, pipeline{ agent{ node{ label 'master' cust ... 
