登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

仙剑奇侠传的博客

羽化成仙

 
 
 

日志

 
 

设计模式之Decorator(油漆工)  

2011-07-18 19:04:18|  分类: 设计模式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

设计模式之Decorator(油漆工)

这种设计模式大家会不自觉得用到,但是没有升华成这种理论。

需求来源分析:一个类不可能把其子类要定义方法在父类中定义完,每个子类都有其个性化的需求,这些个性化的需求就是装饰(Decorator),在子类中加上个性化的方法、字段等就实现油漆工模式。如数据库的应用系统都有保存、新增、删除这几个动作,这几个动作可以以一个类的方式继承下来,数据库系统的每个应用应该继承之类实现,但每个应用的保存方法在保存时可能有具体的业务逻辑要判断。具体要业务逻辑封装成这个子类的额外方法,这就实现了Decortator模式。

应用举例:

父类

package com.wsysoft.designMode;

 

import java.sql.ResultSet;

import java.sql.SQLException;

 

public class Decorator {

    private ResultSet rslt;

    public void add() throws SQLException {

        try {

            rslt.insertRow();

        } catch (SQLException e) {

 

            e.printStackTrace();

        }

 

        // …………………………可以继续定 义方法

    }

 

}

 

 

子类:SubDecorator,需进行刷漆

package com.wsysoft.designMode;

 

import java.sql.SQLException;

/********************************************

* 这个类代表被刷的类,需要增加油漆(即装饰)实现个性化

*/

 

public class SubDecorator extends Decorator {

    private Decorator decorator;

 

    /******************************

     *

     * @param decorator 传入此参数是实现Decorator模式的关键。

     */

    public SubDecorator(Decorator decorator) {

        super();

        this.decorator = decorator;

 

    }

 

    // @Override

    public void add() throws SQLException {

        otherMethod();

        decorator.add();

 

    }

 

    public void otherMethod() {

System.out.println("新增方法调用之前的数据用户状态查等工作……");

    }

}

调用方式:

Decorator decorator=new Decorator();

SubDecorator subDecorator= new SubDecorator(decorator);

subDecorator.add();

  评论这张
 
阅读(387)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018