(1)java设计模式之简单工厂模式-阿里云开发者社区

开发者社区> 无信不立> 正文

(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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JAVA设计模式(3)外观模式(门面模式)
2019年阿里云双11活动拼团:https://www.aliyun.com/1111/2019/group-buying-share 针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下。
558 0
设计模式之二(简单工厂模式)
原文:设计模式之二(简单工厂模式) 前言   简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来决定返回这个基类的哪个具体的派生类,返回值为基类类型,因为基类的引用可以指向派生类对象,而且这些所有的派生类都包含有基类的函数,也就是说派生类中有相同的函数,但是函数的实现可能不同。
606 0
Java描述设计模式(02):简单工厂模式
一、生活场景简介 1、引入场景 订餐流程简单描述 1)、食品抽象类,规定食品的基础属性操作 2)、鱼类,鸡肉类食品类扩展 3)、订餐流程类,根据食品名称,加工指定类型食品 4)、模拟客户端预定操作 2、源代码实现 1)、关系图谱 2)、代码实现 /** * 简单工厂模式引入场景 */ publ...
547 0
[设计模式]简单工厂模式
简介 简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。 简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。
531 0
+关注
无信不立
人无信不立,业不勤不精
595
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载