摘要: 状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式的示意性类图如下所示: 状态模式所涉及到的角色有: ● 环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。 ● 抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。 ● 具体状态(ConcreteState)角色:每一个具体状态类都... 阅读全文
posted @ 2013-02-28 16:44 lifeng_study 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 1,概念 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。 在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作command类。Command模式可应用于 a)整个调用过程比较繁杂,或者存在多处这种调用。这时,使用Command类对该调用加以封装,便于功能的再利用。 b)调用前后需要对调用参数进行某些处理。 c)调.. 阅读全文
posted @ 2013-02-28 16:02 lifeng_study 阅读(140) 评论(0) 推荐(0) 编辑
摘要: observer模式,当被观察者发生变化时,通知观察者,然后观察者也跟着变化实例:热水器,显示器,报警器热水器相对于显示器就是被观察者,显示器相对于热水器就是观察者,但是相对于报警器就是被观察者,报警器相对于显示器就是观察者java中被观察者继承Observable类,观察者继承Observer类1:热水器实现类package pattern.observer;import java.util.Observable;/*** 热水器:被观察者,* 显示器:相对热水器是观察着,相对于报警器是被观察者,* 报警器:观察者* @author lifeng**/public class Heater 阅读全文
posted @ 2013-02-28 11:09 lifeng_study 阅读(222) 评论(0) 推荐(0) 编辑
摘要: select tn, channalName, decode(sucRate, null, '0%', round(sucRate * 100, 2) || '%') sucRate, pointsTotal, userTotal, recommendTotal, recommendSuc, validPoints, vaildUser, activePoints, warnPoints, onlinePoints, RANK() OVER(order by nvl(recommendTotal, 0) desc) as recommendTotalnum, R 阅读全文
posted @ 2013-02-20 16:44 lifeng_study 阅读(211) 评论(0) 推荐(0) 编辑
摘要: select * from (select rownum tn, organise_id organiseId, organise_name, nvl(recommendTotal, 0) recommendTotal, nvl(recommendSuc, 0) recommendSuc, nvl(pointsTotal, 0) pointsTotal, decode(nvl(recommendTotal, 0), 0, 0, recommendSuc / recommendTotal) sucRate, decode(nvl(validPoints, 0), 0, 0, round(reco 阅读全文
posted @ 2013-02-20 16:43 lifeng_study 阅读(211) 评论(0) 推荐(0) 编辑
摘要: Select * from (select Z.*, rownum RN from (select organise_name, open_suc_total, rank() over(order by open_suc_total desc) recSuccessCountRank, recommend_total, rank() over(order by recommend_total desc) recTotalCountRank, to_char(round(open_suc_total / recommend_total * 100, 4), 'fm9999990.00&# 阅读全文
posted @ 2013-02-20 16:42 lifeng_study 阅读(278) 评论(0) 推荐(0) 编辑
摘要: select * from (select rownum RN, B.* from (Select Distinct T.REGION_NAME, T.AREA_NAME, T.CENTER_NAME, T.GRID_NAME, T.POINT_NAME, T.POINT_ID, B.product_code, B.Organise_Id, B.TO_MOBILE, RECOMMEND_DATETIME, reommendRecord, S.LOGIN_NAME, P.PRO_START_TIME, P.PRO_END_TIME From tb_product_info P, Sys_user 阅读全文
posted @ 2013-02-20 16:41 lifeng_study 阅读(179) 评论(0) 推荐(0) 编辑
摘要: select tb_total.* from (select pros.*, rownum RN from (select p.product_code, p.product_name, p.product_type_name, nvl(rd.recommend_total, 0) recommend_total, nvl(rd.open_suc_total, 0) open_suc_total, to_char(nvl(rd.recommend_rat, 0), 'fm9999990.00') recommend_rat, ration(nvl(rd.recommend_to 阅读全文
posted @ 2013-02-20 16:40 lifeng_study 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 第一步:客户端把语句发给服务器端执行。 当我们在客户端执行select语句时,客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句。也就是说,Oracle客户端是不会 做任何的操作,他的主要任务就是把客户端产生的一些SQL语句发送给服务器端。虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作 用事不相同的。服务器上的数据库进程才会对SQL语句进行相关的处理。不过,有个问题需要说明,就是客户端的进程跟服务器的进程是一一对应的。也就是说, 在客户端连接上服务器后,在客户端与服务器端都会形成一个进程,客户端上的我们叫做客户端进程;而服务器上的我们叫做服务器进程.. 阅读全文
posted @ 2013-02-20 16:39 lifeng_study 阅读(307) 评论(0) 推荐(0) 编辑
摘要: oracle的管道也可以返回集合类型,跟游标类似CREATE TYPE my_type AS OBJECT ( field1 NUMBER, field2 VARCHAR2 (50) ); CREATE TYPE my_typelist AS TABLE OF my_type; CREATE OR REPLACE FUNCTION pipelineme RETURN my_typelist PIPELINED IS --定义自己的类型-- v_mytype my_type;BEGIN FOR v_count IN 1 .. 20 LOOP v_mytype := my_type(v_coun. 阅读全文
posted @ 2013-02-20 16:38 lifeng_study 阅读(1037) 评论(0) 推荐(0) 编辑