zoukankan      html  css  js  c++  java
  • 松耦合设计模式 ^

    1:首先了解两个概念:

    聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分

    合成:则是一种强的‘拥有’关系,体现了严格的不分和整体的关系,部分和整体的生命周期一样

    说明图:

    2:桥接模式:将抽象不分与它的实现部分分离,使它们可以独立地变化

                                            桥接模式(Bridge)结构图

    3:具体形象化的设计

    代码:

    View Code
    //手机品牌
        abstract class HandsetBrand
        {
            protected HandsetSoft soft;
    
            //设置手机软件
            public void SetHandsetSoft(HandsetSoft soft)
            {
                this.soft = soft;
            }
            //运行
            public abstract void Run();
            
    
        }
    
        //手机品牌N
        class HandsetBrandN : HandsetBrand
        {
            public override void Run()
            {
                soft.Run();
            }
        }
    
        //手机品牌M
        class HandsetBrandM : HandsetBrand
        {
            public override void Run()
            {
                soft.Run();
            }
        }
    
        //手机品牌S
        class HandsetBrandS : HandsetBrand
        {
            public override void Run()
            {
                soft.Run();
            }
        }
     
    View Code
    //手机软件
        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("运行手机通讯录");
            }
        }
    
        //手机MP3播放
        class HandsetMP3 : HandsetSoft
        {
            public override void Run()
            {
                Console.WriteLine("运行手机MP3播放");
            }
        }
    View Code
    static void Main(string[] args)
            {
                HandsetBrand ab;
                ab = new HandsetBrandN();
    
                ab.SetHandsetSoft(new HandsetGame());
                ab.Run();
    
                ab.SetHandsetSoft(new HandsetAddressList());
                ab.Run();
    
                ab = new HandsetBrandM();
    
                ab.SetHandsetSoft(new HandsetGame());
                ab.Run();
    
                ab.SetHandsetSoft(new HandsetAddressList());
                ab.Run();
    
                Console.Read();
            }
  • 相关阅读:
    Java面向对象之继承
    ios Block解决循环引用和回传值
    iOS 计算label的高度
    十六进制的颜色
    App调SDK时加判断
    vmware中clone后的工作
    关于python保留几位小数,不进行四舍五入的方法
    git 绑定github
    opensuse ./filezilla: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
    关于opensuse开机登录背景修改后,不生效的问题
  • 原文地址:https://www.cnblogs.com/babyGee/p/2566023.html
Copyright © 2011-2022 走看看