博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 创建简单工厂模式
阅读量:5145 次
发布时间:2019-06-13

本文共 2415 字,大约阅读时间需要 8 分钟。

1.抽象类

package com.zpark.service;/** * 定义一个环境接口,所有省治理环境的方式都实现这个接口,并重写治理环境的方法 * @author tong * */public interface Environmental {    public void governanceEnvironment();}

2.实现类

package com.zpark.service.impl;public class BeijingEnvironmental implements Environmental{    @Override    public void governanceEnvironment() {        System.out.println("【北京市治理环境的方法】");    }}
package com.zpark.service.impl;public class TianjinEnvironmental implements Environmental{    @Override    public void governanceEnvironment() {        System.out.println("【天津市治理环境的方法】");    }}
package com.zpark.service.impl;public class HebeiEnvironmental implements Environmental{    @Override    public void governanceEnvironment() {        System.out.println("【河北省治理环境的方法】");    }}

3、简单工厂类

package com.zpark.utils;public class EnvironmentalSimpleFactory {    //根据参数创建对象,这是一个静态方法可以直接使用类名调用    public static Environmental createSalary(String name) {        Class
clazz = null; Environmental salary = null; try { //利用反射机制获取该参数对应的类的对象 clazz = (Class
) Class.forName(name); //使用此类对象创建对应的环境类对象,这里使用父类指针指向子类对象,实现了多态 salary = (Environmental)clazz.newInstance(); }catch (Exception e) { e.printStackTrace(); } return salary; }}

4、测试方法

package com.zpark.test;import org.junit.Test;/** * @author ceshi * @Title: ${file_name} * @Package ${package_name} * @Description: ${todo} * @date 2018/6/818:53 */public class EnvironmentalJunitTest {    @Test    public void test(){        //创建Client对象,以此对象调用computeSalary()方法传入要类型参数        new EnvironmentalJunitTest().computeSalaryEnvironmental("com.zpark.service.impl.BeijingEnvironmental");        new EnvironmentalJunitTest().computeSalaryEnvironmental("com.zpark.service.impl.HebeiEnvironmental");        new EnvironmentalJunitTest().computeSalaryEnvironmental("com.zpark.service.impl.TianjinEnvironmental");    }    /**     * 根据传入的参数调用工厂类的创建环境治理方法,创建不同的薪资对象     * @param name     */    public void computeSalaryEnvironmental(String name) {        //这里使用多态,根据传入参数的不同,生成ZhejiangSalary或者HebeiSalary对象        Environmental environmental = EnvironmentalSimpleFactory.createSalary(name);        //使用生成的对象动态调用具体类对象的方法        environmental.governanceEnvironment();    }}

5.测试结果

 

posted on
2018-06-08 19:06 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/qinxu/p/9157237.html

你可能感兴趣的文章
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
OpenFire 的安装和配置
查看>>
ZJOI2018游记Round1
查看>>
侧边栏广告和回到顶部
查看>>
https://blog.csdn.net/u012106306/article/details/80760744
查看>>
ios应用版本号设置规则
查看>>
海上孤独的帆
查看>>
error: more than one device and emulator 问题解决
查看>>
Android Studio 编译不通过,报错“找不到org.apache.http
查看>>
springmvc集成Freemarke配置的几点
查看>>
Django 学习
查看>>
Linux-以指定用户运行redis
查看>>
Linux-socket的close和shutdown区别及应用场景
查看>>