- 博客(28)
- 收藏
- 关注
原创 23种设计模式
23种设计模式设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池
2016-12-18 23:39:26
321
原创 JAVA设计模式之备忘录模式
JAVA设计模式之备忘录模式概念:备忘录模式(memento),保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。结构原发器类Originator:保存对象内部状态备忘录类Memento:存储状态的拷贝负责人类CareTake:存储备忘录应用棋类开发中的悔棋普通软件的撤销数据库软件中,事务管理的回滚操作类图代码代码类图: // 源发器类public class Em
2016-12-18 23:37:02
336
原创 JAVA设计模式之观察者模式
JAVA设计模式之观察者模式概念:观察者模式(observer), 主要用于1:N的通知。当一个对象(目标对象Subject或Objservable,消息发布)的状态变化时,它需要及时通知一系列对象(观察者对象,Observer,消息订阅),令他们做出响应。 通知观察者的两种方式:推每次都会把通知以广播方式发送给所有观察者,所有观察者被动接受。拉观察者只要知道情况即可。至于什么时候获取内容,
2016-12-18 22:57:56
290
原创 JAVA设计模式之状态模式
JAVA设计模式之状态模式概念:状态模式(status),用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。角色Context环境类:维护一个state对象,定义当前状态。State抽象状态类ConcretaState具体状态类:每个类封装了一个状态对应的行为。类图应用线程对象各状态之间的切换酒店系统中的房间状态OA系统中的公文状态代码 public interface State {
2016-12-18 17:09:16
255
原创 JAVA设计模式之模板方法模式
JAVA设计模式之模板方法模式概念:模板方法模式(template method),模板方法定义一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。在某些类的算法中,用了相同的方法,造成代码的重复。控制子类扩展,子类必须遵守算法规则。角色抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。具体类(Concr
2016-12-18 16:45:23
265
原创 JAVA设计模式之策略模式
JAVA设计模式之策略模式概念:在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if
2016-12-18 16:26:01
426
原创 JAVA设计模式之解释器模式
JAVA设计模式之解释器模式概念:用于描述如何构建一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计。不常用的设计模式,尽量不要使用解释器模式,后期维护会有很大麻烦。角色应用当我们需要开发一种新的语言时,可以考虑使用解释器对象。EL表达式的处理正则表达式解释器SQL语法的解释器数学表达式解释器 可用现成工具包:Math Expression String Parser
2016-12-18 14:09:42
226
原创 JAVA设计模式之访问者模式
JAVA设计模式之访问者模式概念:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。原因是对于存储在一个集合中的对象,它们可能具有不同的类型(及时有一个公共的借口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同。角色 class A { public void method1(){
2016-12-18 14:00:41
201
原创 JAVA设计模式之命令模式
JAVA设计模式之命令模式概念:将来自客户端的请求封装成一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。命令模式也被称之为动作Action模式,事物transaction模式。角色Command定义命令的接口,声明执行的方法。ConcreteCommand命令接口实现对象,是“虚”的实现;通常会
2016-12-18 13:44:51
234
原创 JAVA设计模式之中介模式
JAVA设计模式之中介模式概念:中介模式(mediator):如果一个系统中对象之间是网状结构的,多对多的关系,会导致系统极其复杂,此时可以引入一个中介者对象,负责各个对象的协调,即各个对象只跟中介者打交道,这样负责网络结构就转化为星状结构。 类图应用MVC模式中的C,控制器就是一个中介者对象。M和V都和他打交道。窗口游戏程序,窗口软件开发中窗口也是一个中介者对象。图像界面开发GUI,对个组
2016-12-17 12:12:51
321
原创 JAVA设计模式之迭代器模式
JAVA设计模式之迭代器模式概念:迭代器(iterator),又叫游标cursor模式。用于聚合对象:存储数据;迭代器:遍历数据。类图聚合对象:存储数据 迭代器:遍历数据 应用java中的容器类都有迭代器,代码public interface Myiterator<E> { E first(); E end(); E next(); boolean hasNext();
2016-12-16 00:39:01
350
原创 JAVA设计模式之责任链模式
JAVA设计模式之责任链模式概念:将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能,则传递给链上的下一个对象。类图应用java中,异常机制就是一种责任链模式。一个try可以对应多个catch,当第一个catch不匹配类型,则自动跳到第二个。js中,事件的冒泡和捕获机制。java中,事件的处理采用观察者模式。servle
2016-12-13 00:34:44
314
原创 JAVA设计模式之享元模式
JAVA设计模式之享元模式概念:在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。 在Flyweight模式中,由于要产生
2016-12-11 22:07:46
270
原创 JAVA设计模式之外观模式
JAVA设计模式之外观模式概念:先了解一个基本法则:迪米特法则(最少知道原则)(Demeter Principle)一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。最少知道原则的另一个表达方式是:只与直接的朋友通信。类之间只要有耦合关系,就叫朋友关系。耦合分为依赖、关联、聚合、组合等
2016-12-11 16:11:32
227
原创 JAVA设计模式之装饰模式
JAVA设计模式之装饰模式概念:装饰模式(decorator)动态的为一个对象增加新功能装饰模式是一种用于代替继承的技术,无需通过继承增加子类,就能扩展对象的新功能。使用对象的关联关系替代继承关系,更加灵活,同时避免类型体系的快速膨胀。角色-Component抽象组件: 真实对象和装饰对象有相同接口。这样,客户端对象就能够以与真实对象相同的方式与装饰器对象交互。-ConcreteComponent具
2016-12-11 15:45:02
377
原创 JAVA设计模式之组合模式
JAVA设计模式之组合模式概念:组合模式(composite) 把部分和整体用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。角色-抽象构件(component)角色:定义了叶子和容器构件的共同点-叶子(Leaf)构件角色:无子节点-容器(composite)构件角色:有容器特征,可以包含子节点类图应用操作系统的资源管理器GUI中的容器层次图XML文件解析OA系统中,组织结构
2016-12-11 00:18:50
299
原创 JAVA设计模式之桥接模式
JAVA设计模式之桥接模式概念:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。意图: 将抽象部分与实现部分分离,使它们都可以独立的变化。
2016-12-10 20:54:12
338
原创 JAVA设计模式之代理模式
JAVA设计模式之代理模式概念:通过代理模式,控制对象访问,可以详细的控制某个类或对象的方法,在调用这个方法前做前处理,在调用这个方法后做后置处理(即AOP的微观实现)角色抽象角色定义代理角色和真实角色的公共对外关系。真实角色实现抽象角色,定义真实角色实现的具体业务逻辑,供代理类调用。关注真正的业务逻辑代理角色实现抽象角色。是真实角色的代理,通过真实角色的
2016-12-10 16:26:26
393
原创 JAVA设计模式之适配器模式
JAVA设计模式之适配器模式设计模式的结构类型概念:适配器adapter模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。应用:-系统需要使用现有的类,而这些类的接口不符合系统的接口。-想要建立一个可以重用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。-两个类所做的事情相同或相似,但是具
2016-12-04 21:54:09
231
原创 JAVA设计模式之建造者模式
JAVA设计模式之建造者模式概念-分离对象子组件,子组件单独构造(由builder来负责)和装配模式(由Director负责),从而可以构造出复杂对象。-这个模式适用于某个对象构造特别复杂。-由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以生产不同的对象的对象;相同的构建器和不同的装配顺序也可以构造不同的对象,这样实现了构建算法和装配算法额解耦,实现了更好的复用。应用-StringBui
2016-12-04 21:53:20
239
原创 JAVA设计模式之原型模式
JAVA设计模式之原型模式概念原型模式(prototype),就是克隆技术。-以某对象为原型,复制出新的对象,新对象 具有原型对象的特点。-相对于new产生一个对象需要繁琐的数据准备或访问权限,原型模式效率高(直接clone,避免了重新执行构造过程步骤。)实现:-实现Cloneable接口和clone方法-Prototype模式中实现起来最困难的地方就是内存复制操作,所幸Java中提供了clone
2016-12-04 21:51:28
259
原创 JAVA设计模式之工厂模式
JAVA设计模式之工厂模式概念: 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一
2016-11-28 00:05:50
359
原创 JAVA设计模式之单例模式
JAVA设计模式之单例模式概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍5种:懒汉式单例、饿汉式单例、内部静态类实现、枚举实现、双重检测锁实现。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并
2016-11-27 22:56:04
231
原创 齐博CMS变量覆盖导致sql注入漏洞分析
齐博CMS变量覆盖导致sql注入漏洞分析漏洞具体详情见http://security.alibaba.com/blog/blog.htm?spm=0.0.0.0.AooULy&id=13。1. 根据阿里文章会员中心评论管理member/comment.php中存在变量cidDB未初始化,所以从此处开始利用对评论批量删除,抓包查看2.exp利用全局变量$_FILES的注册变量
2015-03-11 17:20:11
1668
原创 graphlab安装
1. sudo apt-get update sudo apt-get install gcc g++ build-essential libopenmpi-dev openmpi-bin default-jdk cmake zlib1g-dev git2. cd /usr/local/software git clone https://git
2014-09-20 19:17:29
777
原创 ubuntu下搭建基于eclipse的c/c++开发环境
一、安装jdk 1.下载jdk82. 解压安装 sudo mkdir /usr/lib/jvm sudo tar zxvf jdk....tar.gz -C /usr/lib/jvm3.修改环境变量 sudo vim /etc/profile 在末尾添加 #set java environment
2014-07-18 23:55:12
581
转载 vim命令和使用
在linux下写ns代码以及tcl测试脚本,观察trace文件等都少不了用vim。vim是一个高效的浏览工具。有很多使用技巧,在 此,转载一个用法简介。=========================================先稍为介绍一下 vim. vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有. vi 有各种变种, 在不同的机器上
2014-07-13 20:15:41
377
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人