一:简单工厂模式的优点

          --->在阎宏博士的《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设计模式之简单工厂模式的更多相关文章

  1. Java 设计模式01 - 简单工厂模式

    先要学习设计模式之前的先看看一些基础 UML类图简单说明 可以先看看我的这篇博客: UML类图简单说明,学习编程思路的必会技能 接下来才是重点,开始我们的旅程吧. 一.UML类图展示 我们要用简单工厂 ...

  2. Java设计模式(1)——简单工厂模式

    简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 一.模式中包含的角色及其职责 1.工厂(Creator)角色 简单 ...

  3. Java 设计模式之 简单工厂模式(静态工厂方法模式)

    简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的 ...

  4. java设计模式之简单工厂模式

    简单工厂: 简单工厂的优点: 1.去除客户端与具体产品的耦合,在客户端与具体的产品中增加一个工厂类,增加客户端与工厂类的耦合 2.封装工厂类,实现代码平台的复用性,创建对象的过程被封装成工厂类,可以多 ...

  5. Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)

    Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...

  6. 设计模式之简单工厂模式Simple Factory(四创建型)

    工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...

  7. Java 设计模式之抽象工厂模式(三)

    原文地址:Java 设计模式之抽象工厂模式(三) 博客地址:http://www.extlight.com 一.前言 上篇文章 <Java 设计模式之工厂模式(二)>,介绍了简单工厂模式和 ...

  8. Java中的简单工厂模式

    举两个例子以快速明白Java中的简单 工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就 ...

  9. C#设计模式(2)-简单工厂模式

    引言 上一遍中介绍了设计模式中的单例模式-C#设计模式(1)-单例模式,本篇将介绍简单工厂模式,也是比较容易理解的一种模式: 简单工厂模式简介 什么是简单工厂模式? 定义一个工厂类,它可以根据参数的不 ...

随机推荐

  1. 腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置

    在编写ruby on rails程序时,我们可能会需要用到发送邮件的程序,如果使用gmail进行smtp发送一般问题不大,但很多企业使用的是腾讯QQ企业邮箱.使用该邮箱进行链接时出现各种错误,goog ...

  2. Eclipse Error: Unable to set localhost. This prevents creation of a GUID.

    Symptoms The following error appears in the atlassian-confluence.log: 2011-03-16 18:20:03,021 ERROR ...

  3. Class Object

    java.lang Class Object java.lang.Object public class Object Class Object is the root of the class hi ...

  4. 李洪强iOS开发支付集成之银联支付

    iOS开发支付集成之银联支付 银联官网在这里,这里能下载SDK或者是看文档.最新的版本写的简单了很多,看文档一直做下去基本上就没问题了. 首先,SDK在这里下载,里面包含需要的库文件和详细的文档. 银 ...

  5. lintcode 中等题:subSets 子集

    题目 子集 给定一个含不同整数的集合,返回其所有的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], ...

  6. 【Linux高频命令专题(4)】sed

    简述 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-ne ...

  7. springMVC获取request和response

    转载:http://blog.sina.com.cn/s/blog_7085382f0102v9jg.html 1.参数 例如: @RequestMapping("/test") ...

  8. 10 harsh truths that will help you grow

    10 harsh truths that will help you grow帮你成长的10个残酷事实In the game of life, if it often seems like you’r ...

  9. 不用Invoke就等用 Control.CheckForIllegalCrossThreadCalls = false;

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. dubbo-admin管理平台搭建

    参考:http://blog.csdn.net/u013142781/article/details/50396621 一.前言 dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用 ...