博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
乐在其中设计模式(C#) - 外观模式(Facade Pattern)
阅读量:6223 次
发布时间:2019-06-21

本文共 3176 字,大约阅读时间需要 10 分钟。

原文:

乐在其中设计模式(C#) - 外观模式(Facade Pattern)
作者:
介绍
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
示例
有一个Message实体类,某对象对它的操作有Get()方法,另外还有一个对象有一个Validate()方法来判断用户是否有权限。现在提供一个高层接口来封装这两个方法。
MessageModel
using
 System;
using
 System.Collections.Generic;
using
 System.Text;
namespace
 Pattern.Facade
{
    
/**//// <summary>
    
/// Message实体类
    
/// </summary>
    public class MessageModel
    
{
        
/**//// <summary>
        
/// 构造函数
        
/// </summary>
        
/// <param name="msg">Message内容</param>
        
/// <param name="pt">Message发布时间</param>
        public MessageModel(string msg, DateTime pt)
        
{
            
this._message = msg;
            
this._publishTime = pt;
        }
        
private string _message;
        
/**//// <summary>
        
/// Message内容
        
/// </summary>
        public string Message
        
{
            
get return _message; }
            
set { _message = value; }
        }
        
private DateTime _publishTime;
        
/**//// <summary>
        
/// Message发布时间
        
/// </summary>
        public DateTime PublishTime
        
{
            
get return _publishTime; }
            
set { _publishTime = value; }
        }
    }
}
User
using
 System;
using
 System.Collections.Generic;
using
 System.Text;
namespace
 Pattern.Facade
{
    
/**//// <summary>
    
/// 用户相关类
    
/// </summary>
    public class User
    
{
        
/**//// <summary>
        
/// 验证用户是否合法
        
/// </summary>
        
/// <param name="userId">UserId</param>
        
/// <returns></returns>
        public bool Validate(string userId)
        
{
            
if (userId == "admin")
            
{
                
return true;
            }
            
else
            
{
                
return false;
            }
        }
    }
}
SqlMessage
using
 System;
using
 System.Collections.Generic;
using
 System.Text;
namespace
 Pattern.Facade
{
    
/**//// <summary>
    
/// Sql方式操作Message
    
/// </summary>
    public class SqlMessage
    
{
        
/**//// <summary>
        
/// 获取Message
        
/// </summary>
        
/// <returns></returns>
        public List<MessageModel> Get()
        
{
            List
<MessageModel> l = new List<MessageModel>();
            l.Add(
new MessageModel("SQL方式获取Message", DateTime.Now));
            
return l;
        }
    }
}
Message
using
 System;
using
 System.Collections.Generic;
using
 System.Text;
namespace
 Pattern.Facade
{
    
/**//// <summary>
    
/// Facade类
    
/// </summary>
    public class Message
    
{
        
private string _userId = "";
        
/**//// <summary>
        
/// 构造函数
        
/// </summary>
        
/// <param name="userId">UserId</param>
        public Message(string userId)
        
{
            
this._userId = userId;
        }
        
/**//// <summary>
        
/// 获取Message
        
/// 首先使用User类的Validate()方法验证用户是否合法
        
/// 然后使用SqlMessage类的Get()方法获取Message
        
/// </summary>
        
/// <returns></returns>
        public List<MessageModel> Get()
        
{
            User u 
= new User();
            SqlMessage m 
= new SqlMessage();
            
if (u.Validate(_userId))
            
{
                
return m.Get();
            }
            
else
            
{
                List
<MessageModel> l = new List<MessageModel>();
                l.Add(
new MessageModel("无权获取", DateTime.Now));
                
return l;
            }
        }
    }
}
client
using
 System;
using
 System.Data;
using
 System.Configuration;
using
 System.Collections;
using
 System.Web;
using
 System.Web.Security;
using
 System.Web.UI;
using
 System.Web.UI.WebControls;
using
 System.Web.UI.WebControls.WebParts;
using
 System.Web.UI.HtmlControls;
using
 Pattern.Facade;
public
 partial 
class
 Facade : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        Message m 
= new Message("user");
        Response.Write(m.Get()[
0].Message + " " + m.Get()[0].PublishTime.ToString());
        Response.Write(
"<br />");
        m 
= new Message("admin");
        Response.Write(m.Get()[
0].Message + " " + m.Get()[0].PublishTime.ToString());
        Response.Write(
"<br />");
    }
}
运行结果
无权获取 2007-3-20 22:16:50
SQL方式获取Message 2007-3-20 22:16:50
参考
OK
你可能感兴趣的文章
09-C语言选择结构(二)
查看>>
虚拟机类加载机制
查看>>
C++0X 学习之 auto
查看>>
火焰图&perf命令
查看>>
可乐鸡翅
查看>>
Spring MVC【入门】就这一篇!
查看>>
windows7 professional.iso
查看>>
postgresql存储过程
查看>>
vue.js的安装部署+cnpm install 安装过程卡住不动----亲测可用
查看>>
如何使用win7自带的备份还原以及创建系统镜像------傻瓜式教程
查看>>
类,接口,抽象类,结构
查看>>
Linux GSO逻辑分析
查看>>
ORACLE 创建表空间
查看>>
keepalived+双主架构
查看>>
robotframwork的WEB功能测试(二)—登录
查看>>
java_有秒计时的数字时钟
查看>>
最小生成树-Prim算法与Kruskal算法
查看>>
阅读笔记11
查看>>
Javascript中大括号“{}”的多义性
查看>>
Loadrunner Get&Post方法性能测试脚本解析
查看>>