(1)java设计模式之简单工厂模式

简介: 一:简单工厂模式的优点          --->在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。

一:简单工厂模式的优点

          --->在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

            --->模式的核心是工厂类。这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个登录验证类的实例,而调用者则可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的登录方式的时候无需修改调用者。

二:简单工厂模式的缺点

  这个工厂类集中了所以的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。



三:简单工厂模式的代码示例


案例:登陆页面有多种登陆方式,一个工厂类,生成不同方式登陆的对象。

登陆接口

 1 package com.yeepay.sxf.interfaces;
 2 
 3 /**
 4  * 登陆接口
 5  * @author sxf
 6  *
 7  */
 8 public interface Login {
 9 
10     /**
11      * 登陆方法
12      * @param username
13      * @param passwd
14      * @return
15      */
16     public boolean goLogin(String username,String passwd);
17 }
View Code

qq登陆

 1 package com.yeepay.sxf.interfaces.impl;
 2 
 3 import com.yeepay.sxf.interfaces.Login;
 4 /**
 5  * qq号登陆
 6  * @author sxf
 7  *
 8  */
 9 public class Qlogin implements Login{
10 
11     @Override
12     public boolean goLogin(String username, String passwd) {
13         //利用qq帐号密码登陆
14         return false;
15     }
16 
17     
18 }
View Code
微博登陆
 1 package com.yeepay.sxf.interfaces.impl;
 2 
 3 import com.yeepay.sxf.interfaces.Login;
 4 /**
 5  * 微博登陆
 6  * @author sxf
 7  *
 8  */
 9 public class WeiboLogin implements Login {
10 
11     @Override
12     public boolean goLogin(String username, String passwd) {
13         //利用微博帐号登陆
14         return false;
15     }
16 
17     
18 }
View Code

登陆方式工厂

 1 package com.yeepay.sxf.interfaces.impl;
 2 
 3 import com.yeepay.sxf.interfaces.Login;
 4 /**
 5  * 登陆方式的工厂类
 6  * @author sxf
 7  *
 8  */
 9 public class LoginFactory {
10     public static Login createLogin(String fn){
11         if("qq".equals(fn)){
12             return new Qlogin();
13         }else if("weibo".equals(fn)){
14             return new WeiboLogin();
15         }else{
16             return null;
17         }
18     }
19 }
View Code

模拟场景测试

 1 package com.yeepay.sxf.test;
 2 
 3 import com.yeepay.sxf.interfaces.Login;
 4 import com.yeepay.sxf.interfaces.impl.LoginFactory;
 5 
 6 public class Test {
 7 
 8     public static void main(String[] args) {
 9         //前台提交用户名和密码,以及登陆方式
10         String username="290325337";
11         String password="shangxiaofei";
12         String fn="qq";
13         
14         //后台通过登陆方式获取合适的登陆bean
15         Login login=LoginFactory.createLogin(fn);
16         
17         //进行登陆
18         boolean flag=login.goLogin(username, password);
19         
20         //判断登陆成功或失败
21         if(flag){
22             //登陆成功
23         }else{
24             //登陆失败
25         }
26         
27         
28     }
29     
30     
31 }
View Code

 

相关文章
|
1天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
1天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
1天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
1天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
1天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
17天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0
|
1月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
3月前
|
设计模式 存储 算法
Java 设计模式最佳实践:三、行为模式
Java 设计模式最佳实践:三、行为模式
22 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
13天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式