自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 设计模式-访问者模式

定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。模式中的角色:抽象访问者:抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法中的参数定义哪些对象是可以被访问的。访问者:实现抽象访问者所声明的方法,它影响到访问者访问到一个类后该干什么,要做什么事情。抽象元素类:接口或者抽象类,声明接受哪一类访问者访问,程序上是通

2017-08-30 16:43:44 295

原创 设计模式-解析器模式

定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用性最典型的应用就是正则表达式重复发生的问题可以使用解释器模式:比如根据用户输入的公式进行加减乘除四则运算,但是他们输入的公式每次都不同,有时是a+b-c*d,有时是a*b+c-d,等等等等个,公式千变万化,但是都是由加减乘除四个非终结符来连接的,这时我们就可以使用解释器模式。当有一个语言需要解释执

2017-08-30 12:33:26 825

原创 设计模式-享元模式

面向对象技术可以很好的解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致对象创建及垃圾回收的代价过高,造成性能下降等问题。享元模式通过共享相同或者相似的细粒度对象解决了这一类问题。定义:享元模式(FlyWeight),运用共享技术有效的支持大量细粒度的对象。细粒度含义JAVA中的定义:细粒度模型,通俗的讲就是将业务模型中的对象加以细分,从而得到更科

2017-08-30 09:27:34 277

原创 设计模式-中介者模式

定义用一个中介对象来封装一系列对象的交互,中介者使各对象不需要显式地互相调用,而是通过中介者。达到解耦及独立变化(只影响到中介者)。也叫:调停者模式由来:大家想象一下有十个人要共同完成一个工作,他们要互相合作和沟通,并且根据对方的通知可能要改变自己的状态,但这通常会带来很多问题,流程过于复杂,使得每个人不仅要专注于自己的事情,还要与他人进行沟通,得到通知,需要兼顾很多状态的变化。这时候,我们考虑可以

2017-08-29 16:25:56 227

原创 设计模式-职责链模式

定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。本质:分离职责,动态组合。分离职责:分离职责是前提,只有先把复杂功能分开,拆分成很多的步骤和小的功能处理

2017-08-28 15:30:30 258

原创 设计模式-命令模式

定义命令模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Comman

2017-08-28 09:18:27 209

原创 设计模式-桥接模式

定义桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图【

2017-08-25 17:59:43 245

原创 设计模式-单例模式

定义Singleton(单例)是设计模式的一种,为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。产生的原因对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。如在Windows中就只能打开一个任务管理器。如果不使用机制对窗口对象进行唯一化,将弹

2017-08-24 18:01:54 224

原创 设计模式-迭代器模式

定义:迭代器模式又叫做 游标 (Cursor)模式。提供一种方法访问一个容器(container)对象中的各个元素,而又不暴露该对象的内部细节模式中的角色:抽象容器: 一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器: 就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现

2017-08-23 17:42:42 187

原创 设计模式-组合模式

定义:(GoF《设计模式》):将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。概述:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程

2017-08-23 08:44:00 235

原创 设计模式-备忘录模式

定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。模式中的角色Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。Memento(备忘录):负责存储Originator对象的内部

2017-08-21 16:49:12 260

原创 设计模式-适配器模式

模式中的角色:角色关系UML:目标接口:微信用户信息数据访问接口 适配器:将微信用户信息转换成自定义用户信息,执行自定义用户信息数据访问操作 需要适配的类:自定义用户信息数据访问实现UML图如下:java代码:目标接口:package demo15;/** * * @ClassName: WeChatUserInfoDao * @Description:微信用户信息数据访问接口 * @

2017-08-21 11:47:21 182

原创 Java新特性-try-with-resource

在我们的项目中,所有被打开的系统资源,比如流、文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故。传统的try语法try{ //进行可能出现异常的操作}catch(捕获的异常名称){ //进行异常处理}finally{ //关闭资源操作}实例代码如下:public static void try1() {

2017-08-18 10:07:15 1774

原创 Java新特性-Lambda表达式入门

假设我们现在来写一个依据不同属性来筛选苹果的方法,代码如下:Predicate接口代码如下:package java8Test;/** * * @ClassName: Predicate * @Description:函数式接口 * @author cheng * @date 2017年8月17日 上午9:00:59 */@FunctionalInterfacepublic int

2017-08-18 09:03:23 234

原创 设计模式-状态模式

定义状态模式( State Pattern ) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象( Objects for States ),状态模式是一种对象行为型模式。模式中的角色Context: 环境类State: 抽象状态角色ConcreteState: 具体状态角色类角色UML关系图如下:使用场景:对象的状态决定对象的行为,在运行时根据状态

2017-08-17 16:43:33 225

原创 设计模式-观察者模式

定义观察者模式它定义了一种一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。假如一个对象的状态更新,需要其他对象也同步更新的时候,而且这些其他对象可以动态改变,这个时候我们的观测者模式就派上用场类。应用场景观察者模式常用于实现订阅功能的场景,比如说微博的订阅,消息订阅等。我们订阅了它们,它们在有更新的时候就会给我们推送它们的更新信息,这样我们就不用每次都要去刷新它的状态了

2017-08-16 18:23:45 195

原创 设计模式-建造者模式

概念将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以有不同的表示。大概的意思是说:一套的构建过程可以有不同的产品(表示)出来。这些产品(表示)都按照这一套的构建过程被生产出来。初探建造者模式属于创建型模式。比如说:楼房是千差万别的,楼房的外形,层数,内部房间的数量,房间的装饰都不一样。但是对于建造者来说,抽象出来的建筑流程是确定的。因为建筑一座楼房,都可以归纳为几个步骤:1打桩、2建地基

2017-08-15 11:36:05 231

原创 设计模式-外观模式

定义外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。又称为门面模式,为一组接口提供一个统一的入口。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色降低原有系统的复杂

2017-08-15 09:14:08 210

原创 设计模式-模板方法模式

模板方法模式定义定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。介绍在软件开发中,有时会遇到类似的情况,某个方法的实现需要多个步骤,其中有些步骤是固定的,而有些步骤并不固定,存在可变性。为了提高代码的复用性和系统的灵活性,可以使用模板方法模式来应对这类情况。模式中的角色包括:AbstractClass:抽象类,定义了一套算法。 Co

2017-08-14 22:05:58 197

原创 == 和 equals 的区别

值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为t

2017-08-14 16:25:33 242

原创 设计模式-原型模式

简介定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。功能: 1.是通过克隆来创建新的对象实例; 2.是为克隆出来的新的对象实例复制原型实例属性的值。本质:通过克隆来创建新的对象实例。英文:Prototype类型:创建型应用场景1、一个系统想要独立于它想要使用的对象时,可以使用原型模式,让系统只面向接口编程,在系统需要新的对象的时候,可以通过克隆原型来得到;2、需要实例化

2017-08-14 08:56:22 317

原创 java回调

代码模拟的是这样一种场景:老师问学生问题,学生思考完毕回答老师。UML类图如下:回调示意图如下:java代码:回调接口:package demo6;/** * * @ClassName: Callback * @Description: 回调接口 * @author cheng * @date 2017年8月11日 下午6:57:04 */public interface Callb

2017-08-11 20:02:33 486

原创 java反射

Java语言允许通过程序化的方式间接对Class的对象实例操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:构造函数、属性和方法等。Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能.spring中核心模块IOC底层实现的原理就是反射机制,mybatis也是利用java的反射机制来获取和

2017-08-11 16:56:48 257

原创 设计模式-代理模式

简介代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。代理模式是一种设计模式,简单说即是在 不改变源码 的情况下,实现对 目标对象 的 功能扩展 。

2017-08-11 08:50:23 220

原创 设计模式-装饰模式

装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。在装饰模式中的各个角色有:抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。   具体构件(Concrete Component)角色:定义一个将要接收附加责任的类。装饰(Decorator)角色:持有一个构件(Component

2017-08-10 19:00:14 379

原创 设计模式-策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式中包括如下角色:抽象策略:策略类,通常由一个接口或者抽象类实现。具体策略:包装了相关的算法和行为。上下文 : 持有一个策略类的引用,最终给客户端调用。角色关系UML:Context(上下文):1、需要使用ConcreteStrategy提供的算法。 2、内部维护

2017-08-10 11:43:26 238

原创 设计模式-抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些

2017-08-09 16:51:12 267

原创 设计模式-工厂模式

工厂模式的定义工厂模式使用的频率非常高,我们在开发中总能见到它们的身影。其定义为: Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasse

2017-08-09 15:38:07 240

原创 UML类图

类的表示方式实际上,属性的完整表示方式是这样的:可见性 名称 :类型 [ = 缺省值]中括号中的内容表示是可选的实际上,方法的完整表示方式如下:可见性 名称(参数列表) [ : 返回类型]同样,中括号中的内容是可选的。接口的表示方式类与类之间关系的表示方式继承关系继承关系对应的是extend关键字,在UML类图中用带空心三角形的直线表示. 如下图所示: Cat类继承Animal类 接口实现

2017-08-09 12:17:27 436

原创 获取url传过来的参数

url携带参数跳转window.location.href ="demo.html?PACK_NO=234&PACK_ID=4sdfwetr235423ew324";js获取传过来的参数//获取url传过来的参数function getArgs( ) { var args = new Object( ); var query = location.search.substring(

2017-08-09 11:33:19 2025

原创 设计模式-简单工厂模式

简介简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。实现方式简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的

2017-08-08 17:36:05 259

原创 easyui select 动态添加 option

1.html代码:<select class="easyui-combobox" name="site" style="width:300px;" id="transSite" data-options="valueField:'id', textField:'text', panelHeight:'auto'"></select>2.js代码://returnValue为后台返回的js

2017-08-04 15:04:46 8256 1

原创 微信小程序实现列表上拉加载,自动适应屏幕

1.视图层wxml<view class="page__bd"> <!-- 列表渲染 --> <block wx:for="{{goodsList}}" wx:key="goodsId"> <view class="placeholder goodsItem"> <image src="../../images/goods.jpg" mode="center

2017-08-04 12:41:53 5153

原创 微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)

1.顶端固定核心代码如下:<view class="page__hd" style="position:fixed; top:0;width: 750rpx;"> ......</view>最终效果图: 2.底端固定核心代码如下:<!-- 底部固定 --><view class="page__hd" style="position:fixed; bottom:0;width: 750

2017-08-04 11:42:26 43311 14

原创 easyui combobox 中 onchange 事件的触发

下拉选框代码:<select class="easyui-combobox" name="site" style="width:300px;" id="problemType"> <option value="3">延缓件</option> <option value="2">转运件</option> <option value="4">拒收退件</option></sel

2017-08-04 11:30:47 3925

原创 微信小程序中引用FontAwesome字体

1.到Font Awesome官网下载字体包官网链接:Font Awesome中文官网2.打开1中下载的压缩包找到.ttf文件如下图所示: 3.上传2中的字体文件到https://transfonter.org/,选择base64 编吗 ,convert后下载如下图所示: 下一步 4.打开3中下载的文件,找到stylesheet.css5.在桌面新建一个fontAwesome.wxss文件6.

2017-08-03 16:18:05 12928 3

原创 easyui Datebox日期框组件的使用

html页面代码<!-- 其中formatter:ww4指定自定义日期格式,parser:w4指定自定义解析方式--><input class="easyui-datebox" data-options="formatter:ww4,parser:w4,label:'Start Date:',labelPosition:'top',sharedCalendar:'#cc'" style="widt

2017-08-02 12:29:52 1646

原创 JQuery解决jsonp问题,后台采用java

创建html页面如下<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-s

2017-08-01 21:59:59 7159 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除