[置顶] 【设计模式】外观模式降低系统耦合(二)

接上文
【设计模式】外观模式降低系统耦合(一)

六、外观实例演示

1.背景介绍

最近在重构机房收费系统,刚开始的时候使用的是三层架构:UI层、BLL层、DAL层。开始顺利的敲完了登陆的这一条先,后来发现自己以后的线都需要和逻辑层进行交流,正好可以使用上学到的外观模式,在U层和B层之间添加一个外观层,让它给我们节省力道。

在此之前我曾经完成了三层的登陆一条线:【面向对象】初步接触三层架构,在三层各层之间依旧有着很多乱七八糟的关系。

[置顶] 【设计模式】外观模式降低系统耦合(二)_第1张图片

                                    图四 通过喝茶来彰显外观模式

2.架构搭建

[置顶] 【设计模式】外观模式降低系统耦合(二)_第2张图片

                                        图五 三层架构

[置顶] 【设计模式】外观模式降低系统耦合(二)_第3张图片

                                        图六 七层架构

在UI层和BLL层之间建立一个外观层(Facade)。

我们可以把自己想象成UI用户,Facade层就是服务员。这个时候我们需要登录,只要告诉服务员(Facade)就可以了,然后他就会帮助我们实现。同理如果我们需要充值,也就告诉服务员就可以了。

这样的服务员就起到“承上启下”的作用,把我们的意思告诉BLL层就实现了他的历史任务。
下面我用C#语言,以登陆这条线来给大家演示一下:

3.代码

UI层实例化Facade

       private void cmdEnter_Click(object sender, EventArgs e)

        {  
            RoomChargeSystem.Model.UserInfo user = new Model.UserInfo();

            //传值,将两个text传给实体。
            user.UserName  = txtUserName.Text.Trim();
            user.Password  = txtPassWord.Text;

            //实例化业务层

            RoomChargeSystem.Facade.Facade  fac = new Facade.Facade ();
            RoomChargeSystem.Model.UserInfo User = fac.Login (user);
       }

Facade层实例化B层的方法

public class Facade { //实例化一个B层的UsrMgr RoomChargeSystem.BLL.UserMgr users = new BLL.UserMgr(); RoomChargeSystem.BLL.StuMgr stus = new BLL.StuMgr(); //登陆 public RoomChargeSystem.Model.UserInfo Login(RoomChargeSystem.Model.UserInfo user) { RoomChargeSystem.Model.UserInfo User = users.UserLogin(user ); return User; } }

B层实现方法

public class UserMgr { //UserLogin方法,判断登录信息是否正确 public RoomChargeSystem.Model.UserInfo UserLogin(RoomChargeSystem.Model.UserInfo user) { try { //工厂创建接口, DAL实现接口, BLL调用工厂 RoomChargeSystem.DFactory.DFactory DALFactory = new DFactory.DFactory(); RoomChargeSystem.Model.UserInfo User = new Model.UserInfo(); RoomChargeSystem.IDAO.IUserInfo iUserInfo; User.UserName = user.UserName; iUserInfo = DALFactory.CreateUserInfo(); user = User; if (User == null) //登陆失败 { throw new Exception("登陆失败"); } } catch { } return user; } }

七、 心灵鸡汤

千里之行始于足下,学习就是这样,敲代码更是这样!如果我们不去接受就会被代码抛弃!我们要去接受,去理解!在三层里面运用上设计模式就是我们的开始。就是三层变七层的开始!

【作者:王雷 http://blog.csdn.net/kisscatforever】

未完待续…..

你可能感兴趣的:(设计模式,UI,重构,面向对象,架构)