适配器模式 您所在的位置:网站首页 猫抓的图 适配器模式

适配器模式

2023-10-19 09:27| 来源: 网络整理| 查看: 265

适配器模式——双向适配器 一、问题描述二、问题分析1.类图分析 三、适配器模式的优点四、代码及结果

一、问题描述

  设计和实现一个双向适配器实例,使得猫Cat可以学狗Dog叫Cry(),狗可以学猫抓老鼠CatchMouse(),设计类图并编程实现。

二、问题分析 1.类图分析

在这里插入图片描述

三、适配器模式的优点

  将目标类和适配者类解耦,增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性。同时灵活性和扩展性都非常好,符合开闭原则。

四、代码及结果

Cat接口(另一个类似):

public interface Cat { void cry(); void catchMouse(); }

实体Cat类(另一个类似):

public class ConcreteCat implements Cat{ @Override public void cry() { System.out.println("猫叫"); } @Override public void catchMouse() { System.out.println("猫抓老鼠"); } }

适配器类:

public class Adapter implements Dog,Cat{ private Cat cat; private Dog dog; public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public void cry() //猫学狗叫 { System.out.print( "猫学"); dog.wang(); } @Override public void catchMouse() { cat.catchMouse(); } @Override public void wang() { dog.wang(); } @Override public void action() //狗学猫抓老鼠 { System.out.print( "狗学"); cat.catchMouse(); } } }

Test测试类

public class Test { public static void main(String args[]) { Cat cat1 = new ConcreteCat(); Dog dog1 = new ConcreteDog(); Adapter A1 = new Adapter(); A1.setCat(cat1); A1.setDog(dog1); cat1 = (Cat) A1; cat1.catchMouse(); cat1.cry(); dog1 = (Dog) A1; dog1.action(); } }

运行结果: 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有