- 浏览: 26780 次
- 性别:
- 来自: 北京
文章列表
[置顶] 设计模式之状态模式
- 博客分类:
- 设计模式
状态模式
1.核心:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题
2.结构:
Context环境类: 环境类中维护一个State对象,他是定义了当前的状态
State抽象状态类:每一个类封装了一个状态对应的行为
3.结构图
4.场景:
酒店系统中,房间的状态变化(不同状态下相互切换)
已预定
已入住
已空闲
5.代码示例
//状态接口
public interface State {
void handler();
}
//空闲状态的处理
public class FreeStag ...
Java基础之理解Annotation
- 博客分类:
- java基础
Java基础之理解Annotation
一、概念
Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
类加载机制
问题:1、什么是类加载?什么时候进行类加载?2、什么是类初始化?什么时候进行类初始化?3、什么时候会为变量分配内存?4、什么时候会为变量赋默认初值?什么时候会为变量赋程序设定的初值?5、类加载 ...
泛型的定义:
泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。
泛型的特点:
Java语言中的泛型则不一样,它只在程序源码中存在,在编译后的字节码文件中,就已经被替换为原来的原始类型(Raw Type,也称为裸类型)了,并且在相应的地方插入了强制转型代码,因此对于运行期的Java语言来说,ArrayList<int>与ArrayList&l ...
Sub-interface implemented by bean factories that can be part of a hierarchy.
HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个Bean 有可能有父 Bean
public interface HierarchicalBeanFactory extends BeanFactory {
BeanFactory getParentBeanFactory(); //返回本Bean工厂的父工厂
boolean containsLoca ...
public interface Aware {
//Aware类超接口标记,表明这个bean能够被spring容器框架的回调式方法通知,
//有且只能有一个方法,并且方法参数只能有一个且没有返回值(void)
//所有BeanFactory的实现类应该支持尽量支持生命周期中的接 ...
MVC中Push与Pull模式
- 博客分类:
- springmvc
MVC中Push与Pull模式
In case of Push-MVC the data (Model) is constructed and given to the view layer by the Controllers by putting it in the scoped variables like request or session. Typical example is Spring MVC and Struts1. Pull-MVC on the other hand puts the model data typically constructed in Cont ...
gof23种设计模式之总结
- 博客分类:
- 设计模式
总体来说设计模式分为三大类:
创建型模式:共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式:共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式:共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
以作用划分:创建型模式与对象的创建有关系,结构型模式处理类或对象的组合,行为模式对类或对象怎样交互和怎样分配职责进行描述;
以作用域划分:
类模式处理类与子类的关系,这些关系通过继承建立是静态的,在编 ...
快速排序算法
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注 ...
插入、冒泡、直接选择排序算法
- 博客分类:
- 常见排序算法
插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。(打牌算法)
冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排 ...
二叉树的存储结构
二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。
1.顺序存储结构
二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号,缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为k且只有k个结点的右单支树需要2k-1个结点存储空间。依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以 ...
分配排序 桶排序与基数排序
- 博客分类:
- 常见排序算法
基本演化顺序是:分配排序——桶排序——基数排序
分配排序是最基本的为所有可能都分配一个存储位置的方法
桶排序是在分配排序的基础上为相同元素或在同一个范围内的元素分配同一个桶,因此每个桶可以看做一个变长 ...
归并算法排序
算法思想
1.简单地将原始序列划分为两个子序列
2.分别对每个子序列递归排序
3.最后将排好序的子序列合并为一个有序的序列,即归并过程
归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第 ...
希尔排序(Shell Sort)
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
步骤:
1.先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插
2.入排序;然后,取第二个增 ...
Java中创建对象的5种方式
- 博客分类:
- java基础
Java中创建对象的5种方式
Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码
如果你运行了末尾的的程序,你会发现方法1,2,3用构造函数创建对象,方法4,5没有调用构造函数。