- 博客(257)
- 资源 (2)
- 收藏
- 关注
转载 设计模式之反射与配置文件
为了满足“开闭原则”,大部分设计模式都引入了抽象层,如工厂方法模式、抽象工厂模式、适配器模式、桥接模式、命令模式、策略模式等等。客户端代码针对抽象层编程,而在程序运行的时候再指定其子类,根据“里氏代换原则”和面向对象的多态性,子类对象在运行时将覆盖父类对象。如果需要对系统进行扩展或修改,只需修改子类类名即可。在具体实现时,通过引入配置文件可以使得用户在不修改任何客户端代码的前提下增加或替换子类,其
2015-11-21 23:22:27 352
转载 防重复请求处理的实践与总结
#防重复处理总结##背景在业务开发中,我们常会面对防止重复请求的问题。当服务端对于请求的响应涉及数据的修改,或状态的变更时,可能会造成极大的危害。重复请求的后果在交易系统、售后维权,以及支付系统中尤其严重。前台操作的抖动,快速操作,网络通信或者后端响应慢,都会增加后端重复处理的概率。前台操作去抖动和防快速操作的措施,我们首先会想到在前端做一层控制。当前端触发操作时,或弹出确
2015-11-21 23:08:27 421
转载 Java使用简单工厂模式对面向接口编程模式的深度解耦实现
在Java和C#的编程世界里,并没有出现像C++那样的多脉继承,它们只支持单一的继承,或者多级继承,这一变化最大的影响,我觉得是大大的降低了编程的难度,因为没有了C++的多级多脉继承,所以接口出现了,它支持多重继承,当然它的主要目的是为了实现解耦,将定义与实现分离。今天就来谈谈我对Java中面向接口编程的看法,以及个人的一些改进。先看下面一段简短的代码,publ
2015-11-21 23:01:37 499
转载 什么是多态?为什么用多态?有什么好处?多态在什么地方用?
什么是多态?概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。 为什么要用多态呢?原因:我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。耦合度讲的
2015-11-21 10:55:22 5887
原创 如何使用XML作为小型数据库
如何使用XML作为小型数据库?首先,我们以下面的user.xml作为我们所要使用的xml文件,具体内容如下: 小杨 001 男 11 德化 123 0 2012-05-09 16:22:40 2007-01-11 16:18:05 小吴 002
2015-11-20 23:53:18 3516
转载 设计模式中的开闭原则
Table of Contents1 设计模式中的开闭原则1.1 基本原则2 模式中的开-闭原则2.1 策略模式2.2 简单工厂2.3 工厂方法2.4 抽象工厂2.5 建造者模式2.6 桥梁模式2.7 外观模式2.8 中介模式2.9 迭代子模式1 设计模式中的开闭原则 1.1 基本原则系统的可扩展性由开-闭原则、里氏代
2015-11-20 16:48:20 952
原创 深入理解Java:类加载机制及反射
一、Java类加载机制1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始
2015-11-19 17:29:48 423
原创 细谈 对象的初始化过程------内存中的实现过程?
今天对于内存的理解 又加深了一步:对下面代码的理解:[html] view plaincopyprint?class Person { private String name="xiaohong"; private int age=23; private static String co
2015-11-19 17:28:27 467
原创 深入研究Java类加载机制
深入研究Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。 一、简单过程 Java程序运行的场所是内存,当在命令行下执行:java HelloWorld命令的时候,JVM会将HelloW
2015-11-19 17:27:06 387
原创 解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起
在 IBM Bluemix 云平台上开发并部署您的下一个应用。开始您的试用问题引入近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码和具体枚举类别的所有枚举元素,该类在装载枚举代码的同时对其采取两种策略建立内存索引。由于该类是一个公共服务类,在程序各个层面都会使用到它,因此我将它实现为一个单例类。这个类在我调
2015-11-19 17:26:18 462
转载 Java 类和对象的初始化过程及初始化顺序
静态的属于全局静态区,这个部分独立存在,不管是成员还是块,都是静态的,大家地位相等,先到先得。 然后是成员初始化,这个部分在类的构造函数前初始化,因为编译器(或者设计者)可能认为构造函数调用了这个成员变量,所以在其前初始化了。或者说是成员自己有自己的能力来初始化自己,不用构造函数来管,这部分属于能力比较强的,虽然没有静态的地位高,但是,还是能自给自足的一部分团体。 最后才构造函
2015-11-19 17:25:35 4487 1
原创 控制反转(IoC) ? 工厂模式?
不知道大家还记不记得当年程杰的《大话设计模式》了,最近一直想搞明白控制反转到底是怎么回事,刚刚觉得高大上了一点,然后再进一步去学习去对比的时候才发现,以前早就接触过这类的思想,设计原则的依赖倒转和设计模式的工厂方法都很好的体现了这种思想,迫不及待的想要跟大家分享一下啦! 一、依赖倒转原则A.高层模块不应该依赖低层模块。两个都应该依赖于抽象。B.抽象不应该
2015-11-19 10:47:10 592
原创 工厂方法模式与IoC/DI
工厂方法模式与IoC/DI IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入1:如何理解IoC/DI 要想理解上面两个概念,就必须搞清楚如下的问题:参与者都有谁?依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么?控制反转:谁控制谁?控制什么?为何叫反转(
2015-11-19 10:44:27 459
原创 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
工厂模式也用了不少,特别是MS的petshop中对数据库的访问,通过工厂模式可以达到自由切换SQL 和 Oracle 数据库。近来也在看设计模式的书,发现工厂模式还是有不少的扩展。结合书中的知识和我自己理解,从代码的角度来比较工厂模式各变种。1:简单工厂模式:其作用是实例化对象而不需要客户了解这个对象属于那个具体的子类。using System;using System.Col
2015-11-18 23:01:24 382
原创 三层基础知识梳理
在没学习三层之前,我的“今目标”中的项目名称是MVC分层。有一段时间我搞不清这两个是什么概念,有何不同,我找了一些资料,现在还不能很好地理解。先分享一下。三层架构是界面层(UI)、业务逻辑层(BLL)、数据访问层(DAL)构成的,而MVC是模型层(M)、界面层(View)、控制层(Controller)构成的,而且它们之间也不对应。如果硬要给他们对应的话,那么三层架构中的UI对应MVC中的
2015-11-18 20:42:41 431
原创 对抽象工厂+反射+配置文件的实例理解
第一遍学习设计模式时,总有飘飘然的感觉.《大话设计模式》这本书虽然读起来挺有趣味,也感觉比其他讲设计模式的书好理解一些。但是真要用在机房收费系统时还是费劲的。米老师讲过:思想要上移,行动要下移。这两点要紧密结合,缺一不可。总在思想层面上绕,比如设计模式中所举的生活中的例子,用在代码中却不是那么容易,所以必须要行动下移,认真实践。而总在代码中绕,不进行总结提炼概括,学习就很局限,所以我们也要不断总结
2015-11-18 20:40:41 453
原创 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
工厂模式也用了不少,特别是MS的petshop中对数据库的访问,通过工厂模式可以达到自由切换SQL 和 Oracle 数据库。近来也在看设计模式的书,发现工厂模式还是有不少的扩展。结合书中的知识和我自己理解,从代码的角度来比较工厂模式各变种。1:简单工厂模式:其作用是实例化对象而不需要客户了解这个对象属于那个具体的子类。using System;using System.Col
2015-11-18 20:37:08 302
原创 机房收费系统=三层+设计模式
在简单的三层登陆完成之后,我又在其中加入了设计模式,其中包括抽象工厂+反射和外观模式.关于设计模式,在学习三层之前我们已经系统的学习过,可是在这次往机房收费系统中加设计模式时,还是感觉无从下手,出现了学没有致用的尴尬情景.不过这也体现了我们提高班学习中项目驱动的优势. 接下来是我的一些现有思路,可能还不很准确,期待读者朋友的指点. 先说一下简单的三层登陆思想吧:
2015-11-18 20:11:26 406 2
原创 抽象工厂+反射=反射工厂
在我的上一篇文章(疑惑?改良?从简单工厂到工厂方法)中,详细论述了创建模式中简单工厂到工厂方法的演变过程,并试图结合工厂方法的设计以及.net中的反射机制之所长,改良出一种新型的工厂—反射工厂,这当然不是我的首创,经典的PetShop 中便有此工厂的身影。本文尝试按照前篇文章的思路,借着工厂方法到抽象工厂的演变过程而继续对抽象工厂进行改良,文章中的思想仅代表了作者当时的观点,有欠妥的地方,还请
2015-11-18 20:09:38 434
转载 从简单工厂到工厂方法
写在前面最近一段时间在研究有关设计模式方面的文章,拜读了TerryLee以及吕震宇两位老师所写的设计模式方面的系列文章,收获颇丰,也让我对OOP,OOD有了新的理解和认识,不过在看到工厂方面的几篇文章时,却总有个地方想不通,望各位老师专家能替在下答疑解惑,以下是自己对工厂模式的一些理解以及提出的一种改良方案,不知道是否有人提出过类似的方案,如有雷同纯属巧合。有说得不对的地方还请批评指正。
2015-11-18 20:08:56 330
原创 从针对接口编程到依赖注入
1.概况说明2.猫狗大战举例3.说明为什么要针对接口编程,优点4.说明为什么要“依赖抽象,不要依赖具体类”5.说明“依赖倒置”与抽象工厂模式6.说明“将组件的配置与使用分离”7.简单说明依赖注入8.讲解petshop依赖注入与它的工厂模式9.讲解TheBeerHouse依赖注入形式10.几个.Net的依赖注入容器11.取舍与适用概况说明
2015-11-18 20:01:44 364
转载 利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet封装到一个Servlet中(通过BaseServlet进行
利用抽象工厂创建DAO、利用依赖注入去除客户端对工厂的直接依赖、将有关Article的各种Servlet全部封装到一个Servlet中(通过BaseServlet来进行ArticleServlet方法的导向)(这篇文章中只总结了ArticleServlet,而并没有分析ChannelServlet,两者其实差不多,关于ArticleServlet的基本都可以用于ChannelServlet
2015-11-18 19:59:46 987
原创 将数据库的操作代码从servlet中剥离,封装到DAO中
工厂设计模式是所有设计模式中最简单的设计模式!!!(就是通过工厂来创建一些对象)工厂模式的典型应用场景:创建对象(当我们感觉到创建对象是件很痛苦的事,会用工厂模式) 工厂模式:简单工厂,工厂方法,抽象工厂(要支持创建多个产品,定义一个抽象工厂,抽象工厂中有多个工厂方法,可以创建多个产品)工厂方法:抽象工厂:利用工厂方法实现抽象工厂
2015-11-18 19:51:53 1360
原创 应用抽象工厂模式自己动手写一个ioc
本文的作者Danny hui似乎是TTS上的新人,我从Google搜不出一点关于本人的信息。从通过本文可以看出他对模式与IoC有自己独到的见解,本文在TTS上引发很多网友回帖,反响不一。那么我们现在来看看作者的IoC之路吧。 原文:http://www.theserverside.com/tt/articles/article.tss?l=InjectionwithAbstractFac
2015-11-18 19:38:32 1204
原创 抽象工厂+反射+依赖注入 实现对数据访问层和业务逻辑层的优化
分层思想的一个核心就是部件化,各个层之间是相互独立的,每一层可以随便抽取换成一个其他语言的版本,但只要与相应的接口吻合就行。我用的三层架构大致是这样的,基本的三层就不说了,然后分别为业务逻辑层和数据访问层定义一个接口,由具体的那个层来实现,问题产生了,由谁来指定程序使用哪个具体的对象来实现相应接口?为解决这个问题,我应用的是抽象工厂模式。分别为业务逻辑层和数据访问层添加一个抽象工厂
2015-11-18 19:32:35 1506
原创 设计模式之 抽象工厂 封装业务逻辑层和Dao层
一般情况下软件应该尽量遵循以下的设计原则: 开闭原则(OCP) 对扩展开放,对修改关闭里氏替换原则(LSP) 任何类出现的地方,子类一定可以出现(is-a)依赖倒转原则(DIP) 尽量依赖抽象,不要依赖具体接口隔离原则 接口尽量小,不要提供大的接口,使通信尽可能窄合成复用原则 尽量采用合成和聚合的方式达到利用,而不要
2015-11-18 19:30:10 998
原创 谈一谈:抽象工厂+反射+配置文件 实现数据访问程序
《大话设计模式》中第15章中《就不能不换DB吗?》引出了我今天要谈论的主题:抽象工厂+反射+配置文件 实现数据访问程序。当时也不甚理解啊!到了机房收费的亲身实践中,终于体会到了这对组合的奥秘。抽象工厂模式(Abstract Factory)提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。知道它是用来创建工厂的就OK了。反射提供了封装程
2015-11-18 19:23:37 546
原创 asp.net七层架构是指什么
三层Domain(实体层),Dao(数据访问层),Srv(业务逻辑层)面向接口编程(5层)Doamin(实体层),IDao(数据访问层接口),Dao(数据访问层),ISrv(业务逻辑层接口),Srv(业务逻辑层)面向接口编程+抽象工厂设计模式(7层)Domain(实体层),IDao(数据访问层接口),Dao(数据访问层),DaoFactory(数据访问层抽象工厂),
2015-11-18 19:22:02 791
原创 HTML DOM getElementsByTagName() 方法
定义和用法getElementsByTagName() 方法可返回带有指定标签名的对象的集合。语法document.getElementsByTagName(tagname)说明getElementsByTagName() 方法返回元素的顺序是它们在文档中的顺序。如果把特殊字符串 "*" 传递给 getElementsByTagName() 方法,它将返回文档中
2015-11-18 10:39:36 351
原创 CSS布局 ——从display,position, float属性谈起
页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了解的话,很容易出现一些莫名其妙的效果,痛定思痛读了《CSS Mastery》后总结一下。让我们从基础的CSS知识谈起,相信很多初学者和小弟一样不明白CSS原理,一味追求效果,结果页面漏洞百出,错误匪夷所思,关于盒模型我就不多说了,网上很多,注意一下IE和其他浏览器(W3
2015-11-18 10:38:59 261
原创 div+css中clear用法
一开始用clear属性,只是跟float相对使用,今天看视频的时候还是不大明白,查了下资料原来是这样的哦,看咯。clear属性值有四个clear:both|left|right|none;作用:该属性的值指出了不允许有浮动对象的边。 这个属性是用来控制float属性在文档流的物理位置的。 当属性设置float(浮动)时,他所在的物理位置已经脱离文档流了,但是大多时候我们
2015-11-17 19:44:44 595
原创 CSS中的clear属性
首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流。如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为div元素是独占一行的。 注意,以上这些理论,是指标准流中的div。 小菜认为,无论多么复杂的布局,其基本出发点
2015-11-17 19:42:40 551
原创 CSS中float属性详解
首先我们了解到,CSS网页布局的原理,就是按照HTML代码中对象声明的顺序,以流布局的方式来显示它,而流布局就不得不说到float浮动技术。.在HTML中的所有对象,默认分为两种:块元素(block element)、内联元素(inline element),虽然也存在着可变元素,但只是随上下文关系确定该元素是块元素或者内联元素。其实CSS的float属性,作用就是改变块元素(block
2015-11-17 19:38:42 1649
原创 div与span区别及用法
以下是在没有对开发网页页面设置css样式时候情况下,系统默认情况下的介绍div与span区别div占用的位置是一行,span占用的是内容有多宽就占用多宽的空间距离,说明如下图分析:从上图很容易知道“我是内容一;用的div”和“我是内容二;用的div”两个内容外部用的是标签,他们得到样式是占用了一排空间(相当于换行一样);而“我是内容三;用的span”和“我是内容四;用的span
2015-11-17 19:31:23 741
转载 CSS list-style修改列表属性控制li标签样式
list_style属性用于修改列表的属性 格式如下: list_style:列表项标记类型 列表项标记的位置 列表项标记; 也可以单独设置列表项标记: list-style-type用于设置列表项类型: 默认值为disc为实心圆, 常用值:none空 circle空心圆 square实心方块 decimal数字 lo
2015-11-17 19:24:59 1982
原创 css教程之列表属性
列表属性(相关css教程) CSS属性:7、列表属性:这里的属性用来描述列表(list)的一系列属性。list-style-type属性描述用于列表每一项前使用的符号:属性名称: 'list-style-type'属性值: disc | circle | square | decimal | lower-roman | upper-roman | lower-alpha
2015-11-17 19:24:14 341
原创 DIV CSS display (block none inline)属性的用法教程
在一般的CSS布局制作时候,我们常常会用到display对应值有block、none、inline这三个值。下面我们来分别来认识和学习什么时候用什么值。这里通过CSS display知识加实例、图演示讲解方法来学习和了解DIV CSS display。目录CSS display使用display的值有哪些css display block显示css disp
2015-11-17 19:20:07 620
转载 CSS基础(七):z-index详解
概念z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。 层级关系的比较1. 对于同级元素,默认(或position:static)情况下文档流后面的元素会覆盖前面的。2. 对于同级元素,position不为static且z-index存在的情况下z-index大的元素会覆盖z-index小的元素,即z-
2015-11-17 19:17:46 520
原创 css的三种定位方式使用探讨
css 3种类型定位方式,进行控制页面布局:普通定位,浮动定位,绝对定位。 默认使用普通流技术再页面中布局元素,希望表现与普通流不同,另外两个特性position和float 具体实例 复制代码代码如下: css定位功能探索 #relative{ /*相对定位探索 将相对于它在普通流中位置进行定位 相对定位实际上被看作普通流定位模型的一部分,因为元素
2015-11-17 19:15:21 376
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人