zoukankan      html  css  js  c++  java
  • factory方法模式

    利用java中spring框架IOC模块中的factoryBean来创建工厂对象的一种模式

    意义:工厂模式是由抽象工厂(FactoryBean)的实现来创建子工厂来管理资源,实现了节省工厂资源以及引入其他的新技术及资源

    代码实现步骤:

    1.创建一个工厂类对象

     public class ObjectFactory;

    2:factoryBean实现FactoryBean借口返回类型为ObjecFactory

    package com.jt.spring.bean;

    import org.springframework.beans.factory.FactoryBean;

    public class ObjectFactoryBean implements FactoryBean<ObjectFactory> {

    @Override
    public ObjectFactory getObject() throws Exception {
    System.out.println("ObjectFactoryBean.getObject()");
    return new ObjectFactory();
    }

    public Class<?> getObjectType() {
    System.out.println("ObjectFactoryBean.getObjectType()");
    return ObjectFactory.class;
    }

    public boolean isSingleton() {
    System.out.println("ObjectFactoryBean.isSingleton()");
    return false;
    }

    }

    3:测试对象是否创建springCfing.xml为核心配置文件

    @Test
    public void testObjectFactory(){

    ClassPathXmlApplicationContext  context =
    new ClassPathXmlApplicationContext("springCfing.xml");


    ObjectFactory obj=
    context.getBean("objectFactory", ObjectFactory.class);
    System.out.println(obj);
    context.close();
    }

    package com.jt.common.mapper;
    import java.util.List;
    import org.apache.ibatis.annotations.DeleteProvider;import org.apache.ibatis.annotations.InsertProvider;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.SelectProvider;import org.apache.ibatis.annotations.UpdateProvider;
    public interface SysMapper<T> {
        /**     * 根据主键ID批量删除     *      * @param key     * @return     */    @DeleteProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int deleteByIDS(@Param("ids") Object[] key);
        /**     * 根据实体类不为null的字段进行查询,条件全部使用=号and条件     *      * @param record     * @return     */    @SelectProvider(type = SysMapperProvider.class, method = "dynamicSQL")    List<T> select(T record);
        /**     * 根据实体类不为null的字段查询总数,条件全部使用=号and条件     *      * @param record     * @return     */    @SelectProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int selectCount(T record);
        /**     * 根据主键进行查询,必须保证结果唯一 单个字段做主键时,可以直接写主键的值 联合主键时,key可以是实体类,也可以是Map     *      * @param key     * @return     */    @SelectProvider(type = SysMapperProvider.class, method = "dynamicSQL")    T selectByPrimaryKey(Object key);
        /**     * 插入一条数据 支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写) 优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长     *      * @param record     * @return     */    @InsertProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int insert(T record);
        /**     * 插入一条数据,只插入不为null的字段,不会影响有默认值的字段 支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)     * 优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长     *      * @param record     * @return     */    @InsertProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int insertSelective(T record);
        /**     * 根据实体类中字段不为null的条件进行删除,条件全部使用=号and条件     *      * @param key     * @return     */    @DeleteProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int delete(T key);
        /**     * 通过主键进行删除,这里最多只会删除一条数据 单个字段做主键时,可以直接写主键的值 联合主键时,key可以是实体类,也可以是Map     *      * @param key     * @return     */    @DeleteProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int deleteByPrimaryKey(Object key);
        /**     * 根据主键进行更新,这里最多只会更新一条数据 参数为实体类     *      * @param record     * @return     */    @UpdateProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int updateByPrimaryKey(T record);
        /**     * 根据主键进行更新 只会更新不是null的数据     *      * @param record     * @return     */    @UpdateProvider(type = SysMapperProvider.class, method = "dynamicSQL")    int updateByPrimaryKeySelective(T record);
    }

  • 相关阅读:
    Beta版软件说明书
    团队项目第五天
    cnblogs用户体验评价
    团队项目测试计划
    Alpha版总结会议
    软件使用说明书
    团队绩效考核
    各个小组对于“我爱淘”的评价
    软件工程团队项目评价
    丹佛机场行李系统处理方案
  • 原文地址:https://www.cnblogs.com/rui-320/p/9895459.html
Copyright © 2011-2022 走看看