`
IXHONG
  • 浏览: 451588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Decorator模式及其他相似的模式

阅读更多

 Decorator模式

package com.whatsmars.tomcat.design.decorator;

/**
* @author javahongxi 用户留言板处理的接口
*/
public interface MessageBoardHandler {
    /**
	* @author javahongxi 用户可以利用函数留言
	*/
	public String filter(String msg);
}

package com.whatsmars.tomcat.design.decorator;

/**
* @author javahongxi 用户留言板的具体实现
*/
public class MessageBoard implements MessageBoardHandler {

	public String filter(String msg) {
		return "留言板上的内容:" + msg;
	}
}

package com.whatsmars.tomcat.design.decorator;

/**
* @author javahongxi 装饰角色
*/
public class MessageBoardDecorator implements MessageBoardHandler {

	private MessageBoardHandler handler;
	 public MessageBoardDecorator(MessageBoardHandler handler) {
	     super();
	     this.handler = handler;
	   }
	 public String filter(String msg) {
		 return handler.filter(msg);
	   }
}

package com.whatsmars.tomcat.design.decorator;

/**
* @author javahongxi 具体装饰角色,增加过滤掉HTML标签的功能
*/
public class HtmlFilter extends MessageBoardDecorator {

	public HtmlFilter(MessageBoardHandler handler) {
		super(handler);
	}
	public String filter(String content) {
	    String temp = super.filter(content);
	    temp += "^^过滤掉HTML标签!^^";
	    return temp;
	   }
}

package com.whatsmars.tomcat.design.decorator;

/**
* @author javahongxi 具体装饰角色,增加过滤掉政治敏感字眼的功能
*/
public class SensitiveFilter extends MessageBoardDecorator {

	public SensitiveFilter(MessageBoardHandler handler) {
	    super(handler);
	}
	public String filter(String content) {
		String temp = super.filter(content);
	    temp += "^^过滤掉政治敏感的字眼!^^";
	    return temp;
	}
}

package com.whatsmars.tomcat.design.decorator;

/**
* @author javahongxi 客户端测试
*/
public class Test {

	public static void main(String[] args) {
		MessageBoardHandler mb = new MessageBoard();
		String content = mb.filter("一定要学好装饰模式!");
		System.out.println(content);
	      
		mb = new HtmlFilter(new SensitiveFilter(new MessageBoard()));
		content = mb.filter("一定要学好装饰模式!");
		System.out.println(content);
	}
}

console:
留言板上的内容:一定要学好装饰模式!
留言板上的内容:一定要学好装饰模式!^^过滤掉政治敏感的字眼!^^^^过滤掉HTML标签!^^

 

 Adapter模式

package com.whatsmars.tomcat.design.adapter;

/**
 * Created by shenhongxi on 16/4/14.
 */
public class Adaptee {

    public void specificRequest() {
        System.out.println("specific request");
    }
}

package com.whatsmars.tomcat.design.adapter;

/**
 * Created by shenhongxi on 16/4/14.
 */
public interface Target {

    public void request();
}

package com.whatsmars.tomcat.design.adapter;

/**
 * Created by shenhongxi on 16/4/14.
 */
public class Adapter implements Target {

    Adaptee adaptee;

    public void request() {
        adaptee.specificRequest();
    }
}

package com.whatsmars.tomcat.design.adapter;

/**
 * Created by shenhongxi on 16/4/14.
 */
public class Adapter2 extends Adaptee implements Target {
    // 对于我们不必要实现的方法可在Adaptee中作空实现
    public void request() {
        super.specificRequest();
    }
}

  Facade模式

  -- 见一个简单的Servlet容器

 

  个人认为上述三种模式可以统称Wrapper模式,熟练之后我们不必在意它们究竟属于何种设计模式,当然类的命名最好按具体的模式来。

0
6
分享到:
评论

相关推荐

    设计模式之 Decorator模式和代码实现

    【Decorator模式】是一种设计模式,它允许在运行时动态地给对象添加新的责任或功能,而不必通过子类化的方式。在上述的奇幻RPG游戏中,Decorator模式被用来实现武器的锻造过程,尤其是武器镶嵌宝石的功能。这个过程...

    C++ Decorator模式

    Decorator模式是设计模式中的一种结构型模式,它允许在运行时动态地给对象添加新的行为或职责,而不会破坏封装性。这种模式的核心思想是通过装饰类包装原对象,实现对原对象功能的扩展,同时保持与原接口的一致性。 ...

    Decorator模式的应用

    Decorator模式是一种设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式在Java和其他面向对象编程语言中非常常见,尤其在需要灵活扩展功能而不影响原有类结构的情况下。 在给定...

    java Decorator模式的简单例子

    Decorator模式是一种设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式在Java中尤其有用,因为它提供了在不改变类结构的情况下扩展类的功能的方法。以下是对Decorator模式的详细...

    Decorator模式

    Decorator模式是一种设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式属于结构型模式,是面向对象设计中的一个关键工具,能够实现对对象功能的动态扩展。 Decorator模式的核心...

    装饰器模式[Decorator]

    装饰器模式(Decorator)是一种设计模式,它允许在运行时向对象添加新的行为或责任,而无需修改对象的源代码。这种模式属于结构型模式,是面向对象设计中的一种非常实用的技术。 装饰器模式的核心思想是通过将一个...

    Java类库中Decorator模式的应用研究.pdf

    ### Java类库中Decorator模式的应用研究 #### 一、引言 随着软件开发技术的不断发展,设计模式在软件工程中的重要性日益凸显。设计模式能够帮助开发者构建出具有良好结构、高度可扩展性和易于维护的软件系统。其中...

    C#设计模式之Decorator 装饰模式

    装饰模式(Decorator Pattern)是设计模式中的一种结构型模式,它在不改变原有对象的基础上,通过添加额外的职责来扩展对象的功能。在C#中,装饰模式尤其适用于那些需要动态地增加或减少对象功能的情况,避免了使用...

    设计模式之装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern)是一种结构型设计模式,它在不改变原有对象的基础上,通过包裹一个对象并为其添加新的行为或责任,实现对对象功能的扩展。这种模式在软件开发中非常常见,尤其当需要在运行时动态改变...

    java Decorator装饰模式例子

    装饰模式(Decorator Pattern)是设计模式中的一种结构型模式,它允许在运行时给对象添加新的行为或职责,而无需改变对象的类。在Java中,装饰模式通常通过继承和组合来实现,使得代码具有更好的扩展性和灵活性。...

    2022年Decorator模式中遭遇继承与聚合Java教程.docx

    Decorator模式是一种设计模式,主要用来在不改变原有对象的基础上,动态地给对象添加新的行为或属性,从而扩展其功能。这种模式在Java等面向对象语言中广泛应用,它提供了一种比继承更加灵活的扩展机制。 在Java中...

    设计模式之Decorator

    博文链接:https://your.iteye.com/blog/133420

    装饰器(Decorator)模式

    装饰器(Decorator)模式 装饰器(Decorator)模式是一种典型的结构型模式,主要用意是动态地为对象添加一些额外的功能。它提供了一个灵活的替代方案来继承子类,以扩展对象的功能。 在《Element of Reusable ...

    大话西游之设计模式_从猴王学艺看Decorator 配套代码

    猴王学艺的过程,就如同我们在编程中逐步增加对象的能力,通过不同的装饰,猴王学会了七十二般变化,这正是Decorator模式的体现——对象在不改变自身的情况下,通过装饰来获得新能力。 在配套代码中,我们可以看到...

    装饰者模式——Decorator

    装饰者模式(Decorator)是一种设计模式,用于在运行时动态地给对象添加额外的责任或功能。它是结构型设计模式的一种,能将行为的增加与对象的创建分离,使得我们可以独立地扩展对象的功能。 在Java或其他面向对象...

    [结构型模式] head first 设计模式之装饰者模式(decorator)

    【标题】:“装饰者模式(decorator)在Head First设计模式中的详解” 【内容】: 装饰者模式(Decorator Pattern)是结构型设计模式之一,它允许动态地给一个对象添加新的功能,而无需修改其原有代码。这个模式的...

    Java设计模式之-Decorator装饰模式

    Decorator模式,也称为装饰模式,是设计模式中的一个重要组成部分,它在不改变原有对象接口的前提下,动态地给对象添加新的功能,从而扩展了对象的能力。这篇博客()将深入探讨这个模式的细节。 装饰模式的核心...

Global site tag (gtag.js) - Google Analytics