配适器模式

1.什么是配适器模式?

当我有一个类,这个类哪方面都不错

我想用这个类做一点事。但是这个类这种事必须要符合一种规范,而我为了防止出现其他问题

一般都不能直接在这个类基础上直接修改

这时,就用到配适器,吧这个类用配适器一配,让他可以满足这种规范

配适器的三种模式,类配适器,对象配适器,接口配适器

二.类配适器

配适器adapter必须继承我这个要被配适的类adaptee

还要实现目标所要求的接口

我这里有一个source类

public class Source{
 public  void  print(){
    System.out.println("我是源类");
}
}

我想用这个类,但是他必须满足某种接口的要求。

public interface Target{
   public  void add();
}

比如我要直接满足这个规范,怎么办?继承原来的source类实现这个规范。

public class Adapter  extend Source implements Target{
   //重写ride方法
  @overrid
  public void add(){
  System.out.println("我实现add这个接口");
}
}

然后就可以使用了。

//new出来这个接口的实例
Target  target=new  Adapter();
target.add();

3.对象的配适器模式

持有被配适器的实例,来进行更改

对象的配适器模式和类的配适器模式差不多

只需要修改配适器模式就可以了

所谓的对象的配适器模式,这里把源对象传进去,进行一个包装

public  class Wrapper implements Target{
   private Source source;
   //这个源对象封装进去
   public  Wrapper(Source source){
   this.source=source;
}
   public void add(){
   System.out.println("这是增加的方法")
}
}

然后在使用的时候

Source source=new Source();
Wrapper wrapper=new Wrapper(source);
wrapper.add

4.接口的配适器模式

接口的配适器模式主要是为了解决接口中方法过多而导致要重写这个方法的麻烦

public interface Target{
//在这里面定义两个抽象方法
public void add();
public void change();
}

现在我如果要实现这个接口,需要重写两个方法,非常麻烦,我只需要一个那怎么办?

定义一个抽象类去实现

public  abstract class Adaper implements Target{
        @Override
        public abstract void add();
        @Override
        public abstract void change();
}

这时一个抽象类,里面的方法都是抽象的,这样到底好不好呢?

后来我们发现再用一个实体类去继承这个抽象类的时候,这个方法都要重写

这和我们想的不一样啊,我只需要重写一个方法啊

这时,这样设置,这两个方法都要设成抽象的

public  abstract class Adapter implements Target{
            @Override
            public void add(){
            @Override
            public  void change(){};
}
}
时间: 2024-10-26 09:43:49

配适器模式的相关文章

菜鸟版JAVA设计模式—从火锅底料到装饰器模式

今天开始学历了JAVA设计模式中的装饰模式,照例还是写下自己理解的心得吧. 装饰器模式,啥是装饰器模式?带着这个问题,咱们好好的去火锅店吃个火锅. "老板,来份全辣锅底,不要给我用装饰器模式来配料!"我特地狠狠的强调了最后一句话. 不到一会,老板给我端来了一个火锅和几个盘子,火锅里装了盐水,而盘子里放了辣椒,花椒,茴香,大蒜等佐料.......... 这时候大家可能就需要问了,这咋吃啊...难道让我自己配料么? 这便是是我们的矛盾了!客户需要的一盘已经配好料的火锅汤底,但是我们初期给用

java设计模式之 装饰器模式

适AT java设计模式之 装饰器模式 装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构. 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,动态给一个对象添提供了额外的功能. 我们通过下面的实例来演示装饰器模式的用法.模拟一个人从想吃饭.找饭店.享受美食.结束吃饭的过程 代码展示: 首先创建一个被修饰的接口 Eat package deco

PHP设计模式-装饰器模式

1.概念: 装饰器模式又叫做装饰者模式,是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.传统的编程模式都是子类继承父类实现方法的重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数目和层次过多. 2.角色: Component(被装饰对象基类):定义一个对象接口,以规范准备接受附加责任的对象. ConcreteComponent(具体被装饰对象):具体组件角色,即将要被装饰增加功能的类. Decorator(装饰者基类):装饰器接口. ConcreteDecor

构建器模式

*构建器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.类图如下: *product产品类:表示被构建器构建的复杂对象,包含多个部件. 1 //产品接口 示意性产品,所以没有任何方法 2 public interface Product{ 3 } *builder构建器接口:定义创建一个product对象所需要的各个部件的操作. 1 //生成器接口 2 public interface Builder{ 3 public void builderPart1();

【设计模式】之装饰器模式

为什么会有装饰模式? 装饰模式是为了解决继承强依赖性和出现大量子类不方便管理问题而出现的.   1. 概述 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活. 原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数.装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法.修饰类必须和原来的类有相同的接口. 2. 模式中的角色 2.1 抽象构建(Component):定义一个抽象接口,用以给这些对象动态

Decorator Pattern(装饰器模式)Demo1

一个简单的装饰器模式例子,用来体现直接查询,缓存查询,和过滤敏感词汇 1 import java.sql.Connection; 2 import java.sql.PreparedStatement; 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.ArrayList; 6 import java.util.HashMap; 7 import java.util.List; 8 im

装饰器模式

定义:可以动态地添加修改类的功能 解析:一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类继承它,并重新实现类的方法.使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性. $canvas1 = new IMooc\Canvas();$canvas1->init();$canvas1->addDecorator(new \IMooc\ColorDrawDecorator('green'));$canvas1->addDecorato

装饰器模式及JAVA IO流例子★★★☆☆

一.什么是装饰模式 通过关联机制给类增加行为,其行为的扩展由修饰对象来决定: 二.补充说明 与继承相似,不同点在于继承是在编译期间扩展父类,而装饰器模式在运行期间动态扩展原有对象: 或者说,继承是对类进行扩展,装饰模式是对对象进行扩展: 三.角色 抽象构件 具体构件 抽象装饰类 具体装饰类 说明:具体构件.抽象装饰类.具体装饰类的共同父类是抽象构件,具体装饰类继承抽象装饰类并在运行期间装饰具体构件: 四.例子 例子说明: 画家接口Painter,为抽象构件,有两个方法,获取画家描述信息及绘画:

PHP设计模式——组合器模式

声明:本系列博客参考资料<大话设计模式>,作者程杰. 组合模式(有时候又叫做部分-整体模式),将对象组合成树形结构以表示"部分整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性.它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 实现类图: 三大角色: 抽象结构(Company)角色:此角色实现所有类共有接口的默认行为,声明一个接口管理子部件. 叶子节点(Te