函数封装

JQ实现简单的Ajax请求封装

做~自己de王妃 提交于 2019-12-06 00:54:35
封装的意义在于复用,在于减少重复的代码。 我在项目中做了简单的Ajax请求封装,实现方式如下: 1 //封装Ajax请求 2 $.extend({ 3 ajaxDirect:function(url,type,data,success,error){ 4 if(type.toLowerCase()=='post'){ 5 data = pack(data) 6 } 7 $.ajax({ 8 type: type, 9 url: base + url, 10 contentType:'application/json', 11 data:data, 12 beforeSend: function (XMLHttpRequest) { 13 XMLHttpRequest.setRequestHeader("X-Token", localStorage.token) 14 }, 15 success: function(data){ 16 success(data) 17 }, 18 error: function(data){ 19 error(data) 20 }, 21 dataType: "json" 22 }) 23 } 24 }) 其中的要点为: 1.使用jQ的$.extend函数,则调用时只需用$.ajaxDirect(url,type,data,function(){}

java中commons-beanutils的介绍(转)

别说谁变了你拦得住时间么 提交于 2019-12-05 23:09:57
1. 概述 commons-beanutil开源库是apache组织的一个基础的开源库。为apache中很多类提供工具方法。学习它是学习其它开源库实现的基础。 Commons-beanutil中包括大量和JavaBean操作有关的工具方法,使用它能够轻松利用Java反射机制来完毕代码中所须要的功能,而不须要具体研究反射的原理和使用,同一时候,该类库中提出了动态Bean的概念,不但提供现有JavaBean的全部功能,并且还能够在执行时动态的对Bean中的属性数据类型进行改动以及增删属性。 本文研究的是v1.7版本号的commons-utils类库。 2. 转换器 2.1. 概述 转换器用来将输入数据转换成须要的数据类型。同一时候提供统一的接口,方便客户代码使用和扩展。 Commons-beanutils包中。全部转换器都从org.apache.commons.beanutils.Converter接口集成,加入自己须要的实现。 转换器分为下面三个部分: l 数组转换器 l 普通转换器 l 地区敏感的转换器 l 转换器工具类 Converter子类包括的都是转换器的实现,普通情况下,不须要直接实例化这些类,仅仅须要使用ConvertUtil中convert方法,就能够进行数据类型的转换。 高级用户不但能够使用默认的转换方式,还能够向ConvertUtils中注冊新的或替代原有的转换器

类的封装

痞子三分冷 提交于 2019-12-05 20:57:24
1.封装介绍 封装:将属性和方法,封装到对象中 装:是往容器/名称空间里存放名字 封:代表将存放于名称空间中的名字给藏起来,这种隐藏对外不对内 为什么要封装: 封装数据属性,封装函数属性, 1. __开头的属性实现的隐藏仅仅只是一种语法意义上的变形,并不会真的限制类外部的访问 2. 该变形操作只在类定义阶段检测语法时发生一次,类定义阶段之后新增的__开头的属性并不会变形 3. 如果父类不想让子类覆盖自己的属性,可以在属性前加__开头 class Foo: __x=111 # _Foo__x 可以通过 (类名/实例)._类名__属性名 的方式在外部访问 __y=222 # _Foo__y def __init__(self,name,age): self.__name=name self.__age=age def __func(self): #_Foo__func print('func') def get_info(self): print(self.__name,self.__age,self.__x) print(Foo.__x) 报错 print(Foo._Foo__x) 111 类外部访问私有属性的方法 2.如何实现私有属性,方法的对外不对内 外部不可以直接访问私有属性或方法,但是可以间接使用 class Foo: def _f1(self): print('foo..

封装与组合

一世执手 提交于 2019-12-05 20:17:36
继承json模块并派生新的功 继承json 模块中JSONEncoder,并派生出新的功能 本身json只能转化七大数据类型,如果转化对象是对象,将报错 default方法就是出现不能转化的就会报错,继承原父类功能,想更改其中一个函数 命名相同,添加if筛选,并且最终返回相应函数 import datetime,json class MyJson(json.JSONEncoder): def default(self, o): if isinstance(o,datetime.datetime): return datetime.datetime.strftime(o,'%Y-%m-%d %X') else: return super().default(self,o)#其他数据类型直接返回原函数 dict1= {'time':datetime.datetime.now()} res = json.dumps(dict1) print(res) print(type(res)) 组合 组合:一个对象中包含另一个或多个对象,从而减少代码冗余 继承:继承是类与类的关系,子类继承父类属性与方法,子类与父类使用中从属关系 组合:组合是对象与对象的关系,一个对象拥有另一个对象的属性或方法,什么有什么的关系 class People: def __init__(self,name,age

面向对象之 组合 封装

人盡茶涼 提交于 2019-12-05 19:47:25
目录 组合 封装 访问限制机制,私有方法 **(就是类属性前面加__)** property 组合 组合指的是一个对象中,包含另一个或多个对象。( 一个对象拥有另一个对象中的属性/方法 ) 减少代码的冗余 # 组合实现 class People: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex # 老师类 class Teacher(People): def __init__(self, name, age, sex): super().__init__(name, age, sex) # 学生类 class Student(People): def __init__(self, name, age, sex): super().__init__(name, age, sex) # 日期类 class Date: def __init__(self, year, month, day): self.year = year self.month = month self.day = day def tell_birth(self): print(f''' ===== 出生年月日 ===== 年: {self.year} 月: {self.month} 日: {self

vue-iview可展开表格封装

好久不见. 提交于 2019-12-05 19:31:25
项目中我么有时候可以用到可以展开的表格树形表格,方便我们数据和层级关系。 效果图: 实现方式:递归组件思路,使用iview的表格 https://www.iviewui.com/components/table#KZK 封装的组件: src/views/commonComponents/ExpandTable/ExpandTable.vue <template> <div :class="['ExpandTable', 'ExpandTableLevel'+ lev, {'no-table-header': lev !== 1}]"> <Table :class="['table', 'table-level-' + lev]" :loading="tableLoading" :columns="columnsIn" :data="tableData" @on-row-dblclick="handleRowDBclick"></Table> </div> </template> <script> // import util from '@/libs/util'; import ExpandTable from './ExpandTable.vue'; export default { name: 'ExpandTable', components: {ExpandTable},

ADO.NET ORM数据库增删改查封装(工具一)

陌路散爱 提交于 2019-12-05 17:36:54
约束 public abstract class BaseModel {   public int Id { get; set; } } 连接字符串 public static readonly string Customers = ConfigurationManager.ConnectionStrings["Customers"].ToString(); 通用数据库字符串 public class SqlBuilder<T> where T : BaseModel {   public static readonly string FindSql = null;   public static readonly string DeleteSql = null;   public static readonly string FindAllSql = null;   public static readonly string UpdateSql = null;   static SqlBuilder()   {     Type type = typeof(T);     FindSql = $"SELECT {string.Join(",", type.GetProperties().Select(a => $"[{a.Name}]")) } FROM [{type.Name}

vue 封装axios和自定义函数的两种方式

▼魔方 西西 提交于 2019-12-05 14:12:13
在项目中难免有一些重复的操作,比如读取数据等,此时把这些操作封装起来就很有必要了 1.在main.js中封装,在vue页面中获取数据(优点:不需要import操作,挂载在this中)   main.js中:   import Vue from 'vue'   import Axios from 'axios'   import ElementUI from 'element-ui'   Vue.prototype.getData = (Url, Params) => {     return new Promise ((resolve,reject) => {       Axios.get(Url,         {           params: Params         }       )       .then(function(data) {         data.data.data ? data = data.data.data : data = data.data;         if(data.length === 0) {           Vue.prototype.$message({             message: '暂无数据!',             type: 'warning'           });        

设计模式及各大原则简介

跟風遠走 提交于 2019-12-05 08:37:57
简介 项目开发中发现问题、解决问题这个过程中会出现很多问题,比如重复出现、某个问题的遗留,这些问题的本质就是设计模式。今天记录设计模式的知识点。 内容 在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。它们的耦合度依次增强。 依赖关系: 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。 关联关系: 分为单向关联和双向关联。在java中,单向关联表现为:类A当中使用了类B,其中类B是作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。 聚合关系: 是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。 组合关系: 是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。 继承: 表示类与类(或者接口与接口)之间的父子关系。 实现: 表示一个类实现一个或多个接口的方法。 设计原则 要点 定义 描述 单一职责原则 不要存在多于一个导致类变更的原因。通俗的说

UI 自动化框架设想

安稳与你 提交于 2019-12-05 07:28:06
测试框架选型: 首先,通过利用TestNG结合csv的使用,将测试用例数据转化为测试代码中的数据,减少了测试人员录入数据和准备数据的工具; 再次,通过对appium的封装,按照面向对象的思想将测试中用到的页面元素封装成对象,增强测试代码的复用率,并减轻测试人员对底层代码实现的负担,提高测试代码编写效率; 最后,引入失败重跑、失败截屏,并通过reportng生成测试报告的方式,逐步完善测试过程,提高定位问题的速度; 测试框架分层: 数据层、驱动层、测试Case层、支持层 第一层:数据层 即执行用例时所需要的测试数据,如商户名、空间名、URL等,这些数据用来支撑整个脚本的执行。针对数据层,这里采了用数据驱动的方式。 第二层:驱动层 这一层主要封装各种driver。 比如我们针对网页测试,使用selenium-webdriver开发包。 针对app测试,我们使用appium开发包。我们在这一层进行封装,通过调用selenium-webdriver,appium提供的原生方法,封装成可读性很强的方法且加上容错机制。 以后就算我们要换用其他的第三方包,我们的测试案例层和支持层的方法也不需要做任何的修改。 只需要修改driver层实现的方式就可以了。在一层,我们主要实现两个方面的封装,一个是driver的封装,一个是基于基类自然语言函数的封装。 driver封装 我们需要封装