• 设计模式漫谈之桥接模式


    今天调休了,闲来无事,再扯一个设计模式。我不是单纯的说设计模式,更多的是说编程思想上的东西。人心隔肚皮,人眼看到的不一定是真相,所以说女孩结婚后流的泪是当初眼拙脑残的结果。不过爱情中没有对错,爱情本来就是折磨死人不犯法。

    说说继承与组合,继承偏重于对象本身具有;组合偏重于包括其他对象的东西(静的,动的)。设计层面的东西都是抽象的,所以要用抽象或接口来隔离实际功能。

    不扯了,今天说桥接模式,这种结构型模式都是对象之间关系的模式。在数据库模型中,1对1的关系,只用把某个表的主键存在另一个表中,1对多的关系转成面向对象的时候就是多属于1,所以只用把1的主键放在多中。多对多的关系,可以转成两个1对多,就是需要建中间表。

    直接上例子,我来解释例子吧。

    //这个是抽象类,表示思想上的东西,只描述抽象的东西。

    //比如我有个功能,我还知道某种东西可以实现这个功能。

    abstract class HandsetBrand
    {

    //存了一个抽象引用
    protected HandsetSoft soft;

    //给引用赋值对象

    //this就是一个占位实例

    public void SetHandsetSoft(HandsetSoft soft)
    {
    this.soft = soft;
    }
    //定义一个约束(抽象方法我也称为约束)
    public abstract void Run();

    }

    //这个对象拥有此功能

    //这是一种继承与组合的混合使用

    class HandsetBrandN : HandsetBrand
    {
    public override void Run()
    {
    soft.Run();
    }
    }

    //同样这个对象拥有这个功能。

    class HandsetBrandM : HandsetBrand
    {
    public override void Run()
    {
    soft.Run();//其实我内部是通过其他对象实现我这个功能的。
    }
    }

    //这种抽象的对象可以实现这个功能

    abstract class HandsetSoft
    {

    public abstract void Run();
    }

    //具体的实现者

    class HandsetGame : HandsetSoft
    {
    public override void Run()
    {
    Console.WriteLine("运行手机游戏");
    }
    }

    //具体的实现者

    class HandsetAddressList : HandsetSoft
    {
    public override void Run()
    {
    Console.WriteLine("运行手机通讯录");
    }
    }

    HandsetBrand ab;
    ab = new HandsetBrandN();

    //桥接就是连接了对象HandsetBrand与HandsetSoft 

    ab.SetHandsetSoft(new HandsetGame());
    ab.Run();

    ab.SetHandsetSoft(new HandsetAddressList());
    ab.Run();

    总结:这种结构型模式就是描述对象与对象之间关系的。人又称为社会人,假如人与人或人与其他对象没关系,那这个人活不长,没有研究价值。所以在内存中,我们运行的对象是有关系的对象。面向对象正是描述对象之间关系的,最常用的关系继承,组合,接口实现等

  • 相关阅读:
    使用.Net Core 2.2创建windows服务
    Ubuntu 18.04 安装部署Net Core、Nginx全过程
    Task的在主线程处理异常信息的Helper类
    行转列的处理。
    netcore 下加密遇到的问题
    关于安装angular-cli环境报错的问题
    64位的windows服务安装问题
    EF.Mysql在codefirst模式下调用存储过程,和再DbFirst模式下的调用
    阿里云消息队列的C#使用http接口发送消息实例
    [转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法
  • 原文地址:https://www.cnblogs.com/wang-charle/p/8691641.html
Copyright © 2020-2023  润新知