桥接模式:将抽象与实现分离,实现面向接口编程。

场景:面向接口编程,例如,三层架构中的DAL与BLL的引用可以使用桥接模式实现,修改DAL时,BLL中的逻辑不需要改变

UML图:

示例代码:

    public interface IBaseDAL
    {
        void Insert();
    }
    public class UserDAL:IBaseDAL
    {
        public void Insert()
        {
            Console.WriteLine("插入User");
        }
    }
    public class MenuDAL:IBaseDAL
    {
        public void Insert()
        {
            Console.WriteLine("插入Menu");
        }
    }
    public interface IBaseBLL
    {
        IBaseDAL baseDal { get; set; }
        void SetCurrentDal(IBaseDAL BaseDal);
        void InsertOne();
    }
  public class UserBLL : IBaseBLL
    {
        public UserBLL(IBaseDAL BaseDal)
        {
            SetCurrentDal(BaseDal);
        }

        public IBaseDAL baseDal { get; set; }
        public void SetCurrentDal(IBaseDAL BaseDal)
        {
            this.baseDal = BaseDal;
        }

        public void InsertOne()
        {
            baseDal.Insert();
        }
    }
    public class MenuBLL:IBaseBLL
    {
        public MenuBLL(IBaseDAL BaseDal)
        {
            this.baseDal = BaseDal;
        }

        public IBaseDAL baseDal { get; set; }
        public void SetCurrentDal(IBaseDAL BaseDal)
        {
            this.baseDal = BaseDal;
        }

        public void InsertOne()
        {
            this.baseDal.Insert();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IBaseBLL user = new UserBLL(new UserDAL());
            user.InsertOne();

            IBaseBLL menu = new MenuBLL(new MenuDAL());
            menu.InsertOne();
        }
    }

 

posted on 2018-05-31 13:02  chester·chen  阅读(107)  评论(0编辑  收藏  举报