「java里面有装饰器吗」java 装饰器模式

博主:adminadmin 2022-12-16 06:15:08 82

本篇文章给大家谈谈java里面有装饰器吗,以及java 装饰器模式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中装饰器和过滤器的概念是什么?

过滤器能够对目标资源的请求和响应进行截取。具体看

装饰是指:

在一个对象的外围创建一个称为装饰器的封装,动态地给这个对象添加一些额外的功能

原理:在一个对象的外围创建一个称为装饰器的封装,动态地给这个对象添加一些额外的功能。以对客户端透明的方式扩展对象的功能。

装饰器模式又称为包裹模式(wrapper),因为一个具体装饰器都将下一个具体装饰器或具体构件类包裹起来。如有三个装饰器类Decorator1, Decorator2, Decorator3,它们的典型的创建过程为new Decorator1(new Decorator2(new Decorator3(new ConcreteComponent()))).

java io流中装饰器和过滤器的区别

楼主应该是领会了java io的精神的。在我以前学java的时候,与节点流相对的叫做包装流。

分类的依据就是节点流是直接操作IO节点如ByteArray, File, Socket等等,所以相应的InputStream/OutputStream就是节点流。

包装流是在java IO 管道机制中用来处理节点流的其他流对象,像各种Reader, Writer, Printer等等。他们的作用是在节点流基本功能至上提供扩展的功能,就像你说的对象、图片、字符串等的对应特殊操作。

java IO中还有另一种分类就是:字节流与字符流。字节流顾名思义就是直接操作byte二进制数据;字符流则直接操作文本数据。例如:ByteArrayInputStream, ObjectOutputStream等是字节流;BufferedReader, OutputStreamWriter等等是字符流。注意这个分类与上面节点流/包装流的分类不是互斥的,只是两种不同的分类体系。节点流通常都是字节流;而一个流对象可以既是包装流又是字符流,比如刚才说的OutputStreamWriter。

其实流的各种分类只不过是使我们更方便的理解IO包中类或对象的组织方式而已。不一定非要死抠字面。

B.T.W.

楼主所说的装饰器应该与IO中使用频繁的Decorator模式有关。而过滤器可能只是包装流的不同说法。当然也不排除你的资料里它可能是有特指的,比如文件操作中的FileFilter等等。

回答也有点长,请耐心看完,好吗?

java里的装饰器.请具体回答其作用和用法?

Sourcable类的源代码如程序 12-22 所示,其定义了一个接口函数 operation() 。 程序12-22 源接口 Sourcable.java Java代码 package pattern.decorator; public interface Sourcable { /SPAN/li public void operation(); /SPAN/li } package pattern.decorator; public interface Sourcable { public void operation(); } (2 ) Source.java 是 Sourcable.java 的一个实现,其函数 operation() 负责往控制台输出一个字符串:原始类的方法。其源代码如程序 12-23 所示。 程序12-23 源类 Source.java Java代码 package pattern.decorator; public class Source implements Sourcable { /SPAN/li public void operation() { /SPAN/li System.out.println("原始类的方法"); /SPAN/li } } package pattern.decorator; public class Source implements Sourcable { public void operation() { System.out.println("原始类的方法"); } } (3 )装饰器类 Decorator1.java 采用了典型的对象适配器模式,它首先拥有一个 Sourcable 对象 source ,该对象通过构造函 数进行初始化。然后它实现了 Sourcable.java 接口,以期保持与 source 同样的接口,并在重写的 operation() 函数中调用 source 的 operation() 函数,在调用前后可以实现自己的输出,这就是装饰器所扩展的功能。其源代码如程序 12-24 所示。 程序12-24 装饰器类 Decorator1.java Java代码 package pattern.decorator; public class Decorator1 implements Sourcable { /SPAN/li private Sourcable sourcable; /SPAN/li public Decorator1(Sourcable sourcable){ /SPAN/li super(); /SPAN/li this.sourcable=sourcable; /SPAN/li } public void operation() { /SPAN/li System.out.println("第一个装饰器前"); /SPAN/li sourcable.operation(); System.out.println("第一个装饰器后"); /SPAN/li } } package pattern.decorator; public class Decorator1 implements Sourcable { private Sourcable sourcable; public Decorator1(Sourcable sourcable){ super(); this.sourcable=sourcable; } public void operation() { System.out.println("第一个装饰器前"); sourcable.operation(); System.out.println("第一个装饰器后"); } } 装饰器类Decorator2.java 是另一个装饰器,不同的是它装饰的内容不一样,即输出了不同的字符串。其源代码如程序 12-25 所示。 程序12-25 装饰器类 Decorator2.java Java代码 package pattern.decorator; public class Decorator2 implements Sourcable { /SPAN/li private Sourcable sourcable; /SPAN/li public Decorator2(Sourcable sourcable){ /SPAN/li super(); /SPAN/li this.sourcable=sourcable; /SPAN/li } public void operation() { /SPAN/li System.out.println("第二个装饰器前"); /SPAN/li sourcable.operation(); System.out.println("第二个装饰器后"); /SPAN/li } } package pattern.decorator; public class Decorator2 implements Sourcable { private Sourcable sourcable; public Decorator2(Sourcable sourcable){ super(); this.sourcable=sourcable; } public void operation() { System.out.println("第二个装饰器前"); sourcable.operation(); System.out.println("第二个装饰器后"); } } 装饰器类Decorator1.java 是第三个装饰器,不同的是它装饰的内容不一样,即输出了不同的字符串。其源代码如程序 12-26 所示。 程序12-26 装饰器类 Decorator3.java Java代码 package pattern.decorator; public class Decorator3 implements Sourcable { /SPAN/li private Sourcable sourcable; /SPAN/li public Decorator3(Sourcable sourcable){ /SPAN/li super(); /SPAN/li this.sourcable=sourcable; /SPAN/li } public void operation() { /SPAN/li System.out.println("第三个装饰器前"); /SPAN/li sourcable.operation(); System.out.println("第三个装饰器后"); /SPAN/li } } package pattern.decorator; public class Decorator3 implements Sourcable { private Sourcable sourcable; public Decorator3(Sourcable sourcable){ super(); this.sourcable=sourcable; } public void operation() { System.out.println("第三个装饰器前"); sourcable.operation(); System.out.println("第三个装饰器后"); } } 这时,我们就可以像使用对象的适配器模式一样来使用这些装饰器,使用不同的装饰器就可以达到不同的装饰效果。如程序12-27 所示,首先需要创建一 个源类对象 source ,然后根据将对象使用 Decorator1 来装饰,并以此使用 Decorator2 、 Decorator3 进行装饰,装饰后的对象 同样具有与 source 同样的接口。 程序12-27 测试类 DecoratorTest.java Java代码 package pattern.decorator; public class DecoratorTest { /SPAN/li /** /SPAN/li * @param args */ public static void main(String[] args) { /SPAN/li Sourcable source = new Source(); /SPAN/li // 装饰类对象 /SPAN/li Sourcable obj = new Decorator1(new Decorator2(new Decorator3(source))); /SPAN/li obj.operation(); } } package pattern.decorator; public class DecoratorTest { /** * @param args */ public static void main(String[] args) { Sourcable source = new Source(); // 装饰类对象 Sourcable obj = new Decorator1(new Decorator2(new Decorator3(source))); obj.operation(); } } 运行该程序的输出如下: 第1 个装饰器装饰前 第2 个装饰器装饰前 第3 个装饰器装饰前 原始类的方法 第3 个装饰器装饰后 第2 个装饰器装饰后 第1 个装饰器装饰后 从输出的结果可以看出,原始类对象source 依次被 Decorator1 、 Decorator2 、 Decorator3 进行了装饰。

java常用的设计模式一共有多少种

1、正如上一位答主所言,java中存在23种面向对象的设计模式,分别是:

1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

2、他们遵从如下原则:

1)单一职责原则

2)里式替换原则

3)依赖倒置原则

4)接口隔离原则

5)迪米特法则

6)开闭原则

3、如果非要用几个简单的字来概括这繁杂的23种设计模式那就是“高内聚,低耦合”。

4、百度--23种设计模式,边研究原理,边敲代码,其义自见。

java中的设计模式如何分类

java中有23种常见的设计模式。

这23种模式中从大的方面又可分为:创建模式、结构模式、行为模式。

创建模式中包括:Factory(工厂)、Prototype(原型)、Builder(建造者)、Singleton(单例)

结构模式中包括:Facade(外观)、Proxy(代理)、Adapter(适配器)、Composite(组合)、Decorator(装饰器或油漆工)、Bridge(桥接)、Flyweight(享元)

行为模式中包括:Template(模板)、Memnto(备忘录)、Observer(观察者)、Chain of Responsibility(职责链)、Command(命令模式)、State(状态模式)、Strategy(策略)、Mediator(中介者)、Interpreter(解释器)、Visitor(访问者)

关于java里面有装饰器吗和java 装饰器模式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-16,除非注明,否则均为首码项目网原创文章,转载请注明出处。