zoukankan      html  css  js  c++  java
  • 设计模式之适配器模式

        适配器模式主要用于当我们写的代码与旧代码(可能不是我们写的)无法兼容时,做类型兼容,这样我们就可以轻松使用旧代码中的功能了,这个模式和装饰模式很像。

    但二者还是有所区别的,装饰模式主要是为了为类添加装饰功能,将核心功能与装饰功能分开。适配器模式主要是为了新旧代码的兼容万不得已才使用

    代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 设计模式之适配器模式
    {
        public abstract class Player
        {
            private string name;
            public string Name
            {
                get
                {
                    return name;
                }
                set
                {
                    name = value;
                }
            }
            abstract public void Go();
            abstract public void Defend();
        }
        public class AmericaPlayer : Player
        {
            public override void Go()
            {
                Console.WriteLine("{0} Let's Go!",Name);
            }
            public override void Defend()
            {
                Console.WriteLine("{0} Come back! Defend!",Name);
            }
        }
        public class ChinesePlayer 
        {
            private string name;
            public string Name
            {
                get
                {
                    return name;
                }
                set
                {
                    name = value;
                }
            }
            public void 进攻()
            {
                Console.WriteLine("{0} 进攻!",name);
            }
            public void 防守()
            {
                Console.WriteLine("{0} 回来防守!",name);
            }
        }
        public class BetweenPlayer : Player
        {
            public ChinesePlayer cPlayer = new ChinesePlayer();
            public override void Go()
            {
                cPlayer.进攻();
            }
            public override void Defend()
            {
                cPlayer.防守();
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                AmericaPlayer aPlayer = new AmericaPlayer();
                aPlayer.Name = "科比";
                aPlayer.Go();
                aPlayer.Defend();
                ChinesePlayer cPlayer = new ChinesePlayer();
                cPlayer.Name = "姚明";
                BetweenPlayer bPlayer = new BetweenPlayer();
                bPlayer.cPlayer = cPlayer;
                bPlayer.Go();
                bPlayer.Defend();
                Console.Read();
    
            }
        }
    }

    运行结果:

  • 相关阅读:
    SQL Server 查看存储过程执行次数的方法
    css背景图片拉伸 以及100% 满屏显示
    时间倒计时
    对于解决 缓存问题
    HTML5 隐藏地址栏 兼容IOS 与安卓
    多行文字实现垂直居中 css3
    div中溢出文字用点代替
    左侧固定 右侧自适应 布局
    两个DIV第一个用了定位后 如何让两个DIV 落在一起
    String.Format,DateTime日期时间格式化
  • 原文地址:https://www.cnblogs.com/JsonZhangAA/p/5559587.html
Copyright © 2011-2022 走看看