• 设计模式值适配器模式


    最近有些忙,双休都在加班,心情比较烦躁,写篇博客静静心。

    今天扯结构型设计模式。重要的话多说几遍,程序员最重要的是编程思想,圈起来,要考试。哈哈。

    说说面向对象的三大特性之一继承。继承,白话意思是最起码是那个东西。例如A是基类,B继承A,意思就是B最起码是个A.所以当A有显式构造函数时,子类必须也要有这个构造函数,因为构造函数就是说明对象是个啥。

    构造函数是对象的,不是类型的。在继承链中,基类的构造函数偏重于约束作用。

    又扯远了,今天说适配器模式。是一种对象功能的封装转换。又想扯了,程序员要多实践多过脑子,看书多顶多是纸上谈兵。直接上例子,我来翻译。

    abstract class Player
    {
    protected string name;
    //抽象类的构造函数起到约束作用
    public Player(string name)
    {
    this.name = name;//this指的是当前对象
    }

    public abstract void Attack();
    public abstract void Defense();
    }

    //基类继承抽象类

    class Forwards : Player
    {

    //“实现”基类的构造约束
    public Forwards(string name)
    : base(name)
    {
    }

    public override void Attack()
    {
    Console.WriteLine("前锋 {0} 进攻", name);
    }

    public override void Defense()
    {
    Console.WriteLine("前锋 {0} 防守", name);
    }
    }

    //继承基类

    class Center : Player
    {
    public Center(string name)
    : base(name)
    {
    }

    //必须重新抽象基类的方法

    public override void Attack()
    {
    Console.WriteLine("中锋 {0} 进攻", name);
    }

    public override void Defense()
    {
    Console.WriteLine("中锋 {0} 防守", name);
    }
    }

    //拥有基类类似的功能

    class ForeignCenter
    {
    private string name;
    public string Name
    {
    get { return name; }
    set { name = value; }
    }

    public void 进攻()
    {
    Console.WriteLine("外籍中锋 {0} 进攻", name);
    }

    public void 防守()
    {
    Console.WriteLine("外籍中锋 {0} 防守", name);
    }
    }

    //继承基类,转换其他对象的类似功能(善于工具)

    class Translator : Player
    {
    private ForeignCenter wjzf = new ForeignCenter();

    public Translator(string name)
    : base(name)
    {
    wjzf.Name = name;
    }

    public override void Attack()
    {
    wjzf.进攻();
    }

    public override void Defense()
    {
    wjzf.防守();
    }
    }

    Player b = new Forwards("巴蒂尔");
    b.Attack();

    Player m = new Guards("麦克格雷迪");
    m.Attack();

    //Player ym = new Center("姚明");
    Player ym = new Translator("姚明");
    ym.Attack();
    ym.Defense();

    总结:结构型设计模式重在各个对象的关系。适配器模式,主要是利用现有的对象功能实现其功能,重在转换功能。

    设计模式这种东西是编程思想上的东西,与具体语言无关。

  • 相关阅读:
    windows上npm yarn.ps1,因为在此系统上禁止运行脚本
    windows批量启动服务
    Typora极简教程
    Markdown修改字体颜色
    markdown锚点
    R语言报错long vectors not supported yet qap_encode.c 36
    MAC OS 解决R语言locale问题
    Java调用R语言
    MQL4编程—值传递和引用传递
    二分法查找
  • 原文地址:https://www.cnblogs.com/wang-charle/p/8684662.html
Copyright © 2020-2023  润新知