java设计模式----简单工厂

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。下面是简单工厂UML模型:

那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明:

  就拿登录功能来说,假如应用系统需要支持多种登录方式如:手机认证、邮箱认证、用户名登录。那么自然的做法就是建立一个各种登录方式都适用的接口。

定义登录接口:

package com.simple.factory;

/**
 * 登录接口
 * */
public interface Login {
	public boolean login(String name, String password);
}

手机号码登录:

package com.simple.factory;

public class PhoneNumberLogin implements Login {

	@Override
	public boolean login(String name, String password) {
		// 登录处理逻辑
		if (password.equals("123123")) {
			return true;
		} else {
			return false;
		}
	}
}

邮箱登录:

package com.simple.factory;

/**
 * 邮箱登录
 * */
public class EmailLogin implements Login {

	@Override
	public boolean login(String name, String password) {
		// 登录处理逻辑
		if (password.equals("123123")) {
			return true;
		} else {
			return false;
		}
	}
}

用户名登录:

package com.simple.factory;

public class UserNameLogin implements Login {

	@Override
	public boolean login(String name, String password) {
		// 登录处理逻辑
		if (password.equals("123123")) {
			return true;
		} else {
			return false;
		}
	}
}

静态工厂核心类:

package com.simple.factory;

/**
 * 静态工厂核心类
 * */
public class LoginManager {
	public static Login factory(String type) {
		if (type.equals("Email")) {
			return new EmailLogin();
		}
		if (type.equals("PhoneNumber")) {
			return new PhoneNumberLogin();
		}
		if (type.equals(type.equals("UserName"))) {
			return new UserNameLogin();
		}
		return null;
	}
}

测试客户端:

package com.simple.factory;

/**
 * 测试客户端
 * */
public class Client {
	public static void main(String[] args) {
		String mLoginType = "PhoneNumber";
		String name = "dashu";
		String password = "123123";
		Login login = LoginManager.factory(mLoginType);
		boolean bool = login.login(name, password);
		if (bool) {
			System.out.println("登录成功");
		} else {
			System.out.println("登录失败");
		}
	}
}

简单工厂模式的优点

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

简单工厂模式的缺点

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

java设计模式----简单工厂

时间: 2024-10-07 05:06:57

java设计模式----简单工厂的相关文章

JAVA 设计模式 简单工厂模式

用途 简单工厂模式 (Simple Factory) 又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例. 简单工厂模式是一种对象创建型模式 (可参考 设计模式 创建型模式). 但是简单工厂模式不属于23种Gof设计模式之一. 结构 如何实现一个具有加减乘除基本功能的计算器? 对于这四种运算来说,都需要两个操作数,差别仅在于返回的结果不同. 由此,我们可以抽象化它们的共性,提炼出一个父类.这个类中包含

java 设计模式--简单工厂

简单工厂设计模式,也就是静待工厂 场景,最近小米6很火啊,我也是小米的粉丝,就拿小米6来说,有黑色,白色,蓝色,三种非常亮的颜色. 先来代码,然后有疑惑,最后解释. 简单工厂设计模式有一个类是抽象类,是黑色,白色,蓝色手机的父类. /**  * 小米手机抽象类  *   * @author sdc  *  */ public abstract class XiaoMiProduction { /**  * 生产小米6的方法  */ public abstract void createXiaoM

java设计模式--简单工厂模式

 简单工厂设计模式 工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式.它定义一个用于创建对象的接口,由子类决定实例化哪一个类. 核心知识点如下: (1) 大量共同定义的接口. (2) 由不同的对象去实现该接口. (3) 子类(具体工厂类)决定实例化哪一个类(具体产品类)有着“一对一”的关系. 前言(也算是工厂的一个应用需求场景吧) 最近在构建自动化测试平台,公司需求是:必须在IE,火狐,Google浏览器下回归测试用例.Selenium的webdriv

Java设计模式——简单工厂模式

1.    简单工厂模式 1.1 概述 又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例. 1.2 优点 客户端不需要在负责对象的创建,从而明确了各个类的职责. 1.3 缺点 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护 2.     代码 Animal抽象类-Animal.java package cn.itcast_01; public abstract class Animal { public

Java设计模式 -- 简单工厂模式(SimpleFactory)

一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.模式中包含的角色及其职责 1.工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象.2.抽象(Product)角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口.3.具体产品(Concrete Product)角色简单工厂模式所创建的具体实例

Java设计模式-简单工厂模式(Static Factory Method)

简单工厂模式(Static Factory Method) 简单工厂模式是类的创建模式,又叫静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.那么简单工厂模式应用在那些场景呢: 拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证,域认证(口令认证通常是去数据库中验证用户,而域认证则是需要到微软的域中去验证用户).那么自然的做法就是建立一个各种登录方式都适用的接口:如下图所示: package com.tutoria

JAVA设计模式——简单工厂

工厂模式分为三种:简单工厂模式,工厂方法模式,抽象工厂模式.我看有的书上和有的文章里是分为两种,没有简单工厂. 工厂模式主要的作用是:一个对象在实例化的时候可以选择多个类,在实例化的时候根据一些业务规则来选择实例化哪个类. 1.先定义一个图形接口,有一个画方法 public interface Shape { void draw(); } 2.再创建两个实现接口的实体类 public class Rectangle implements Shape { @Override public void

设计模式 -- 简单工厂(Java&&PHP)

面向对象设计的基本原则                                                                 单一职责系统中的每一个对象应该只有一个单独的职责,所有对象关注的应该是自身职责的完成.基本思想:高内聚,低耦合. 开闭原则一个对象对扩展开放,对修改关闭.基本思想:对类的改动是通过增加代码进行的,而不是修改现有的代码. 里氏替换原则在任意父类出现的地方,都可以使用子类来替代. 依赖注入原则要依赖于抽象,不要依赖于具体的实现.基本思想:在开发中尽量

Java研究之学习设计模式-简单工厂模式详解

 简介: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 类图: 从UML类图中,可以看出,简单工厂模式的意思,就是把一个类内部,需要生成的部分,提取出来,变为一个工厂,通过工厂来new对象. 假设我们要吃苹果了,我们可以在代码中new一个苹果出来:当我们需要吃香蕉了,我们在代码中new一个香蕉出来.这种做法你会不会觉得麻烦