(1)java设计模式之简单工厂模式
一:简单工厂模式的优点
--->在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
--->模式的核心是工厂类。这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个登录验证类的实例,而调用者则可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的登录方式的时候无需修改调用者。
二:简单工厂模式的缺点
这个工厂类集中了所以的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。
三:简单工厂模式的代码示例
案例:登陆页面有多种登陆方式,一个工厂类,生成不同方式登陆的对象。
登陆接口
package com.yeepay.sxf.interfaces; /**
* 登陆接口
* @author sxf
*
*/
public interface Login { /**
* 登陆方法
* @param username
* @param passwd
* @return
*/
public boolean goLogin(String username,String passwd);
}
qq登陆
package com.yeepay.sxf.interfaces.impl; import com.yeepay.sxf.interfaces.Login;
/**
* qq号登陆
* @author sxf
*
*/
public class Qlogin implements Login{ @Override
public boolean goLogin(String username, String passwd) {
//利用qq帐号密码登陆
return false;
} }
package com.yeepay.sxf.interfaces.impl; import com.yeepay.sxf.interfaces.Login;
/**
* 微博登陆
* @author sxf
*
*/
public class WeiboLogin implements Login { @Override
public boolean goLogin(String username, String passwd) {
//利用微博帐号登陆
return false;
} }
登陆方式工厂
package com.yeepay.sxf.interfaces.impl; import com.yeepay.sxf.interfaces.Login;
/**
* 登陆方式的工厂类
* @author sxf
*
*/
public class LoginFactory {
public static Login createLogin(String fn){
if("qq".equals(fn)){
return new Qlogin();
}else if("weibo".equals(fn)){
return new WeiboLogin();
}else{
return null;
}
}
}
模拟场景测试
package com.yeepay.sxf.test; import com.yeepay.sxf.interfaces.Login;
import com.yeepay.sxf.interfaces.impl.LoginFactory; public class Test { public static void main(String[] args) {
//前台提交用户名和密码,以及登陆方式
String username="290325337";
String password="shangxiaofei";
String fn="qq"; //后台通过登陆方式获取合适的登陆bean
Login login=LoginFactory.createLogin(fn); //进行登陆
boolean flag=login.goLogin(username, password); //判断登陆成功或失败
if(flag){
//登陆成功
}else{
//登陆失败
} } }
(1)java设计模式之简单工厂模式的更多相关文章
- Java 设计模式01 - 简单工厂模式
先要学习设计模式之前的先看看一些基础 UML类图简单说明 可以先看看我的这篇博客: UML类图简单说明,学习编程思路的必会技能 接下来才是重点,开始我们的旅程吧. 一.UML类图展示 我们要用简单工厂 ...
- Java设计模式(1)——简单工厂模式
简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 一.模式中包含的角色及其职责 1.工厂(Creator)角色 简单 ...
- Java 设计模式之 简单工厂模式(静态工厂方法模式)
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的 ...
- java设计模式之简单工厂模式
简单工厂: 简单工厂的优点: 1.去除客户端与具体产品的耦合,在客户端与具体的产品中增加一个工厂类,增加客户端与工厂类的耦合 2.封装工厂类,实现代码平台的复用性,创建对象的过程被封装成工厂类,可以多 ...
- Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...
- 设计模式之简单工厂模式Simple Factory(四创建型)
工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...
- Java 设计模式之抽象工厂模式(三)
原文地址:Java 设计模式之抽象工厂模式(三) 博客地址:http://www.extlight.com 一.前言 上篇文章 <Java 设计模式之工厂模式(二)>,介绍了简单工厂模式和 ...
- Java中的简单工厂模式
举两个例子以快速明白Java中的简单 工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就 ...
- C#设计模式(2)-简单工厂模式
引言 上一遍中介绍了设计模式中的单例模式-C#设计模式(1)-单例模式,本篇将介绍简单工厂模式,也是比较容易理解的一种模式: 简单工厂模式简介 什么是简单工厂模式? 定义一个工厂类,它可以根据参数的不 ...
随机推荐
- PHP之set_error_handler()函数讲解
定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数. 该函数用于创建运行时期间的用户自己的错误处理方法. 该函数会返回旧的错误处理程序,若失败,则返回 null. 语 ...
- spoj 147
dfs枚举真值 #include <cstdio> #include <cstring> #include <cstdlib> #include <stack ...
- new Date()的数据类型的问题
function getServerNow(){ return new Date(new Date() + svrMinusLocal); } svrMinusLocal是服务器时间减本地时间的时间差 ...
- Unity3d 模型导入选项
- hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
- POJ 1922 Ride to School(贪心+模拟)
题意:起点与终点相隔4500米.现Charley 需要从起点骑车到终点.但是,他有个习惯,沿途需要有人陪伴,即以相同的速度, 与另外一个人一起骑.而当他遇到以更快的速度骑车的人时,他会以相应的速度跟上 ...
- 利用hadoop自带程序运行wordcount
1.启动hadoop守护进程 bin/start-all.sh 2.在hadoop的bin目录下建立一个input文件夹 JIAS-MacBook-Pro:hadoop- jia$ mkdir inp ...
- Linux防火墙(Iptables)的开启与关闭
Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...
- linux入门教程(十) 文档的压缩与打包
在windows下我们接触最多的压缩文件就是.rar格式的了.但在linux下这样的格式是不能识别的,它有自己所特有的压缩工具.但有一种文件在windows和linux下都能使用那就是.zip格式的文 ...
- 独立IP与共享IP的区别
做网站选择独立IP还是共享IP,相信很多站长都在此纠结过,自己不使用服务器的时候从来没有关心过独立IP和共享IP的究竟有什么具体的差别.但当自己真正用到的时候,才发现:同样都是 IP,差别不是一般的大 ...