天天看点

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

介绍

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

示例

有一个Message实体类,某对象对它的操作有Get()方法,另外还有一个对象有一个Validate()方法来判断用户是否有权限。现在提供一个高层接口来封装这两个方法。

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

MessageModel

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Collections.Generic;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Text;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

namespace Pattern.Facade

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

{

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    /**//// <summary>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    /// Message实体类

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    /// </summary>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    public class MessageModel

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /**//// <summary>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// 构造函数

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// </summary>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// <param name="msg">Message内容</param>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// <param name="pt">Message发布时间</param>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        public MessageModel(string msg, DateTime pt)

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            this._message = msg;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            this._publishTime = pt;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        private string _message;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// Message内容

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        public string Message

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            get 

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

{ return _message; }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            set 

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

{ _message = value; }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        private DateTime _publishTime;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// Message发布时间

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        public DateTime PublishTime

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

{ return _publishTime; }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

{ _publishTime = value; }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

}

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

User

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    /// 用户相关类

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    public class User

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// 验证用户是否合法

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// <param name="userId">UserId</param>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// <returns></returns>

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        public bool Validate(string userId)

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            if (userId == "admin")

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

                return true;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            }

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            else

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

                return false;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

SqlMessage

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    /// Sql方式操作Message

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    public class SqlMessage

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// 获取Message

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        public List<MessageModel> Get()

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            List<MessageModel> l = new List<MessageModel>();

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            l.Add(new MessageModel("SQL方式获取Message", DateTime.Now));

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            return l;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

Message

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    /// Facade类

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    public class Message

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        private string _userId = "";

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        public Message(string userId)

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            this._userId = userId;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// 首先使用User类的Validate()方法验证用户是否合法

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        /// 然后使用SqlMessage类的Get()方法获取Message

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            User u = new User();

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            SqlMessage m = new SqlMessage();

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

            if (u.Validate(_userId))

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

                return m.Get();

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

                List<MessageModel> l = new List<MessageModel>();

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

                l.Add(new MessageModel("无权获取", DateTime.Now));

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

                return l;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

client

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Data;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Configuration;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Collections;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Web;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Web.Security;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Web.UI;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Web.UI.WebControls;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Web.UI.WebControls.WebParts;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using System.Web.UI.HtmlControls;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

using Pattern.Facade;

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

public partial class Facade : System.Web.UI.Page

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    protected void Page_Load(object sender, EventArgs e)

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        Message m = new Message("user");

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        Response.Write(m.Get()[0].Message + " " + m.Get()[0].PublishTime.ToString());

乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        Response.Write("<br />");

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

        m = new Message("admin");

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
乐在其中设计模式(C#) - 外观模式(Facade Pattern)

运行结果

无权获取 2007-3-20 22:16:50

SQL方式获取Message 2007-3-20 22:16:50

参考

<a href="http://www.dofactory.com/Patterns/PatternFacade.aspx" target="_blank">http://www.dofactory.com/Patterns/PatternFacade.aspx</a>

OK

<a href="http://files.cnblogs.com/webabcd/Pattern.rar">[源码下载]</a>