zoukankan      html  css  js  c++  java
  • 设计模式学习总结(七)适配器模式(Adapter)

      适配器模式主要是通过适配器来实现接口的统一,如要实现国内手机在国外充电,则需要在不同的国家采用不同的适配器来进行兼容!

      一、示例展示:

      以下例子主要通过给笔记本电脑添加类似手机打电话和发短信的功能来详细演示适配器模式的应用!

      对象适配器:

       1. 创建抽象类:Handphone

    public abstract class Handphone
    {
        public abstract void Dail();
        public abstract void SendMessage();
    }
    View Code

      2. 创建抽象类:Laptop

    public abstract class Laptop
    {
        public abstract void Working();
    }
    View Code

      3. 创建具体类:AppleLaptop

    public class AppleLaptop : Laptop
    {
        public override void Working()
        {
            Console.WriteLine("Working using laptop!");
        }
    }
    View Code

      4. 创建适配器类:

    public class AppleLatopAdapter : Handphone
    {
        //Keep the reference of Laptop
        Laptop laptop;
        public AppleLatopAdapter(Laptop laptop)
        {
            this.laptop = laptop;
        }
        public void Working()
        {
            laptop.Working();
        }
    
        public override void SendMessage()
        {
            Console.WriteLine("My apple laptop can send message now!");
        }
    
        public override void Dail()
        {
            Console.WriteLine("My apple laptop can dail now!");
        }
    }
    View Code

      5. 客户端调用:

    class Program
    {
        static void Main(string[] args)
        {
            AppleLaptop laptop = new AppleLaptop();
            Handphone hpAdapter = new AppleLatopAdapter(laptop);
    
            laptop.Working();
    
            hpAdapter.Dail();
            hpAdapter.SendMessage();
            Console.ReadLine();
        }
    }
    View Code

      类适配器:

       1. 创建接口:Handphone

    public interface Handphone
    {
        void Dail();
        void SendMessage();
    }
    View Code

      2. 创建抽象类:Laptop

    public abstract class Laptop
    {
        public abstract void Working();
    }
    View Code

      3. 创建适配器:LaptopAdapter

    public class LatopAdapter : Laptop, Handphone
    {
        public void SendMessage()
        {
            Console.WriteLine("My apple laptop can send message now!");
        }
    
        public void Dail()
        {
            Console.WriteLine("My apple laptop can dail now!");
        }
    
        public override void Working()
        {
            Console.WriteLine("My apple laptop is working now!");
        }
    }
    View Code

      4. 客户端调用:

    class Program
    {
        static void Main(string[] args)
        {
            Handphone ltAdapter = new LatopAdapter();
    
            ltAdapter.Dail();
            ltAdapter.SendMessage();
            Console.ReadLine();
        }
    }
    View Code

      二、适配器模式设计理念:

      适配器模式主要通过添加额外的适配器类,通过对抽象类对扩展接口Handphone中的方法进行实现,同时又保留原类Laptop的方法来实现功能的扩展!

      三、角色及关系:

       

  • 相关阅读:
    我的第一篇博客
    1.2 位于Shell脚本第一行的#!
    1.1 一个简单的脚本
    JDK与CGlib动态代理的实现
    解决Sublime Text3中文显示乱码问题
    多线程讲解
    (转)Spring中@Async用法总结
    (转)spring boot注解 --@EnableAsync 异步调用
    Spring Boot中的注解
    (转)如何用Maven创建web项目(具体步骤)
  • 原文地址:https://www.cnblogs.com/sccd/p/6581581.html
Copyright © 2011-2022 走看看