7.Adapter适配器(结构型模式)

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;


namespace ConsoleApp2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("\r\n----Arraylist的继承-------------------");
            MyInt array = new MyInt();
            array.Add(111);
            array.Add(222);
            array.Add("Name");

            foreach (var i in array)
            {
                Console.Write(i+" ");
            }

            Console.WriteLine("\r\n----类适配器-------------------");
            AdapterClass ls = new AdapterClass();
            ls.Push(125);
            ls.Add("arr");


            foreach (var i in ls)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine("\r\n----对象的适配器-------------------");
            Adapter adapter = new Adapter();
            adapter.Push("aa");
            adapter.Push(123);
            adapter.Push("Name");
            adapter.Push(array);

            foreach (var i in adapter.adaptee)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine("\r\nPeek():"+adapter.Peek());

            Console.WriteLine("\r\nPop();" + adapter.Pop());
             foreach (var i in adapter.adaptee)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();
            Console.ReadLine();
        }
    }

    public interface IStack      //客户希望的接口 
    {
        void Push(object item);  //压栈
        object Pop();            //出栈

        object Peek();           //查寻
    }

    /// <summary>
    /// 对象适配器
    /// </summary>
    public class Adapter : IStack   //适配对象
    {
        public ArrayList adaptee ;         //被适配的对象

        public Adapter () { adaptee = new ArrayList(); }

        public object Peek()
        {
            return adaptee[adaptee.Count - 1];
        }

        public object Pop()
        {
            object temp = adaptee[adaptee.Count - 1];
            adaptee.RemoveAt(adaptee.Count-1);
            return temp;
        }

        public void Push(object item)
        {
            adaptee.Add(item);
        }
    }


     /// <summary>
     /// 类适配器
     /// </summary>
    public class AdapterClass: ArrayList,IStack   //适配对象
    {

        public object Peek()
        {
            return this[this.Count - 1];
        }

        public object Pop()
        {
            this.RemoveAt(this.Count - 1);
            return this[this.Count - 1];
        }

        public void Push(object item)
        {
            this.Add(item);
        }
    }

      /// <summary>
      /// ArrayList的继承
      /// </summary>
    public class MyInt : ArrayList
    {
        
    }
}

----Arraylist的继承-------------------
111 222 Name
----类适配器-------------------
125 arr
----对象的适配器-------------------
aa 123 Name ConsoleApp2.MyInt
Peek():ConsoleApp2.MyInt

Pop();ConsoleApp2.MyInt
aa 123 Name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值