1.创建抽象类User

public abstract class User // 抽象类
{
public void sameOperation()
{
System.out.println("修改个人资料!");
} public abstract void diffOperation();
}

2.创建继承类Employee、Manager、Administrator

public class Employee extends User
{
public Employee()
{
System.out.println("创建员工对象!");
} public void diffOperation()
{
System.out.println("员工拥有创建假条权限!");
}
}
public class Manager extends User {
public Manager() {
System.out.println("创建经理对象!");
} public void diffOperation() {
System.out.println("经理拥有创建和审批假条权限!");
}
}
public class Administrator extends User
{
public Administrator() // 构造函数
{
System.out.println("创建管理员对象!");
} public void diffOperation()
{
System.out.println("管理员拥有创建和管理假条权限!");
}
}

3.创建userDao类,判断身份用

public class UserDAO {
public int findPermission(String userName, String userPassword) // 定义两个参数
{
if ("zhangsan" == userName && "123456" == userPassword) {
return 2;
} else {
return -1;
}
}
}

4.工厂类,根据不同的身份,创建不同的类对象

public class UserFactory // 用户工厂类
{
public static User getUser(int permission) // 静态方法
{
if(0==permission) // 值为0的时候,返回雇员
{
return new Employee();
}
else if(1==permission) // 值为1 返回经理
{
return new Manager();
}
else if(2==permission) // 值为2 返回管理员
{
return new Administrator();
}
else
{
return null;
}
}
}

5.创建客户端类,进行调用。JAVA中存在一种客户端的概念,主函数的概念。通过主函数,去实现类的实例化和方法的调用。

public class Client  // 客户端
{
public static void main(String args[]) // 主函数
{
try { // 主题代码
User user; // 声明对象
UserDAO userDao = new UserDAO(); // 声明对象并赋值
int permission = userDao.findPermission("zhangsan", "123456"); //定义参数并赋值
user = UserFactory.getUser(permission); // 重新赋值对象
user.sameOperation(); // 调用方法
user.diffOperation();
} catch (Exception e) { // 输出异常
System.out.println(e.getMessage());
}
}
}

执行结果:

创建管理员对象!

修改个人资料!

管理员拥有创建和管理假条权限!

目录结构如下,

JAVA设计模式之【简单工厂模式】的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. Java中的简单工厂模式

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

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

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

随机推荐

  1. E3: PS4/PC 莎木3 众筹200万美元 9小时内达成

    这次E3任天堂没有新掌机(传说中的XDS呢.呵呵)和口袋的消息, 被喷得很严重, 索尼的FF7重制版和莎木3是亮点. 而莎木3的众筹速度据说创了记录, 玩家的情怀大胜. 笔者看到国内也有赞助几十刀的玩 ...

  2. [工作积累] Software keyboard not shown on Activity.onCreate

    protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setCo ...

  3. Codeforces Round #204 (Div. 2)->B. Jeff and Periods

    B. Jeff and Periods time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. CSS预处理器实践之Sass、Less大比拼[转]

    什么是CSS预处理器? CSS可以让你做很多事情,但它毕竟是给浏览器认的东西,对开发者来说,Css缺乏很多特性,例如变量.常量以及一些编程语法,代码难易组织和维护.这时Css预处理器就应运而生了.Cs ...

  5. 了解Javascript 变量

    javascript语言变量的作用域可以分为局部变量和全局变量 函数内部定义的变量为局部变量,作用范围在整个函数体内,函数外定义的变量为全局变量,如果在函数内部定义变量时没有使用关键字var,那么该变 ...

  6. BZOJ2961: 共点圆

    好久没发了 CDQ分治,具体做法见XHR的论文… /************************************************************** Problem: 29 ...

  7. DevSecOps简介(二)

    越来越多的组织机构开始采取 DevOps 实践,作为呼应,本文将概括强调很多人认为这一实践缺失的部分:安全.随着 NV (网络虚拟化) 和 NFV (网络功能虚拟化)的使用率逐步攀升,在开发和部署流程 ...

  8. Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾

    Fbric.Ansible.Docker.Chaos Monkey:DevOps工具的年中回顾 [编者按]近日,Cyber Engineering Solutions Group 技术经理 Hasan ...

  9. Loadrunner监控Centos

    一.安装必要包 yum istall gcc gcc-c++ rpcbind -y 二.下载安装必要软件rstatd 下载并安装rstatd,下载地址:http://sourceforge.net/p ...

  10. ZOJ3231 Apple Transportation(最小费用流)

    题目给你一棵苹果树,然后每个结点上有一定的苹果树,你要将苹果运输达到某个状态,使得均方差最小. 将苹果x个从a->b的花费是x*w,w是边权. 当时比赛的时候想的就是,最后达到的状态一定是sum ...