给女友讲讲设计模式——适配器模式(JAVA实例)5

简介: 前言有这样一个人,看到别人一个个开餐馆赚了好多钱,于是自己也很想在餐饮业这方面大展拳脚,他从别人那里学到了他们的理念,还学习到了他们真正开店的经验。不但如此,他还引进了除了吃饭意外其他的服务,例如说提供了本该是酒吧才有的歌手驻场来提供好的就餐氛围这样的服务。

前言

有这样一个人,看到别人一个个开餐馆赚了好多钱,于是自己也很想在餐饮业这方面大展拳脚,他从别人那里学到了他们的理念,还学习到了他们真正开店的经验。不但如此,他还引进了除了吃饭意外其他的服务,例如说提供了本该是酒吧才有的歌手驻场来提供好的就餐氛围这样的服务。正因为如此,生意做得生龙活虎。

正文

说起适配器模式,主要可以分为三种 : “类适配” ,“对象适配” ,“接口适配”。类适配与对象适配及其相似,接口适配相对有些出入。
下面就代码进行讲解一下。

package adapter;

public interface Restaurant {
    public void haveFood();
    public void haveDrink();
}

这是一个餐厅的接口,有食物,也有饮料。

package adapter;

public class RestaurantImpl implements Restaurant{

    @Override
    public void haveFood() {
        System.out.println("提供各种美食");
        
    }

    @Override
    public void haveDrink() {
        System.out.println("提供各种饮料");
        
    }

}

我们是实现了这个接口,让他有具体的实际意义。

package adapter;

public interface Bar {
    public void haveSong();
}

酒吧接口,提供了一个唱歌驻唱的服务。

package adapter;

public class MyRestaurantAdapter extends RestaurantImpl implements Bar{

    @Override
    public void haveSong() {
        System.out.println("在餐厅同样提供酒吧的驻唱服务");
    }

}

用适配器创建我们自己的餐厅,这样我们既有食物,饮料,还有了酒吧所具有的驻唱功能。

package adapter;

public class MainTest {
    
    public static void main(String[] args) {
        MyRestaurantAdapter adapter = new MyRestaurantAdapter();
        adapter.haveFood();
        adapter.haveDrink();
        adapter.haveSong();
    }
}

调用一下自己创造的餐厅。


下面是对象适配器,在适配器中,把自己想要继承的方法,定义为一个变量,然后以构造函数的函数,注入进去,和刚刚类适配器大同小异。

package adapter;

public class MyRestaurantAdapter2 implements Bar{

    private Restaurant restaurant;
    public MyRestaurantAdapter2(Restaurant restaurant) {
        this.restaurant = restaurant;
        this.restaurant.haveFood();
        this.restaurant.haveDrink();
    }
    @Override
    public void haveSong() {
        System.out.println("餐厅同样可以有酒吧的相关驻唱服务");
    }

}

package adapter;

public class MainTest {
    
    public static void main(String[] args) {
        
        MyRestaurantAdapter2 adapter2 = new MyRestaurantAdapter2(new RestaurantImpl());
        adapter2.haveSong();
    }
}

下面介绍一下接口适配器,使用接口适配器主要的原因是这样的,在一个接口中有很多方法的时候,我们想要实现它,必须得把所有的他的方法都放在自己的类中,虽然是一些空方法,不用具体的实现,但是看起来也是特别让人感觉到火大的,所以我们用了一个抽象类作为了一个适配器,下面来看代码。

package adapter;

public interface BestRestaurant {

    public void havebeef();
    
    public void haveIceCream();
    
    public void haveRedWine();
    
    public void havePizza();
    
    public void haveGooseLiver();
}

这是一个最棒的餐厅,有着各种各样的丰富料理。

package adapter;

public abstract class BestRestaurantAdapter implements BestRestaurant {

    public void havebeef() {
    };

    public void haveIceCream() {
    };

    public void haveRedWine() {
    };

    public void havePizza() {
    };

    public void haveGooseLiver() {
    };
}

通过抽象类作为一个适配器,实现最好的餐厅接口。

package adapter;

public class BestResaurantMy extends BestRestaurantAdapter{


    @Override
    public void havebeef() {
        System.out.println("这里有牛肉");
    }
    
    @Override
    public void haveRedWine() {
        System.out.println("这里有红酒");
    }
    

}

继承一下刚刚的抽象类,这样我们只需要实现自己想要的方法就可以了。不必再把那些没用的空方法一并放进来。

package adapter;

public class Client {
    
    public static void main(String[] args) {
        BestRestaurant br =new BestResaurantMy();
        br.havebeef();
        br.haveRedWine();
    }

}

最后调用一下就大功告成了。

后记

最近公司实在是太忙,因为项目快要上线了,所以一直就耽搁没有进行更新,现在生物钟又回到正轨上了,要继续拿起书本不断进步学习,生命不息,学习不止。

目录
相关文章
|
5月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
761 157
|
5月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
618 2
|
7月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
5月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
1091 35
|
5月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
469 8
|
7月前
|
设计模式 安全 Java
Java设计模式(一):单例模式与工厂模式
本文详解单例模式与工厂模式的核心实现及应用,涵盖饿汉式、懒汉式、双重检查锁、工厂方法、抽象工厂等设计模式,并结合数据库连接池与支付系统实战案例,助你掌握设计模式精髓,提升代码专业性与可维护性。
|
7月前
|
设计模式 XML 安全
Java枚举(Enum)与设计模式应用
Java枚举不仅是类型安全的常量,还具备面向对象能力,可添加属性与方法,实现接口。通过枚举能优雅实现单例、策略、状态等设计模式,具备线程安全、序列化安全等特性,是编写高效、安全代码的利器。
|
6月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
260 0
|
设计模式 缓存 安全
Java设计模式的单例模式应用场景
Java设计模式的单例模式应用场景
372 4
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
229 4