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

本文共 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
你可能感兴趣的文章
JAVAEE-junit测试hibernate里的方法(hibernate交给spring管理)的问题
查看>>
MOTO MB860 国行2.3.5优化增强ROM_Top_T5_end(经典收藏版)
查看>>
C#学习经典(二)---MVC框架(Model view Controller)
查看>>
log4j配置文件说明
查看>>
Maven: 为Compiler插件设置source和target版本
查看>>
linux下永久添加静态路由
查看>>
android 全局变量和局部变量命名规则
查看>>
Ubuntu Sub-process /usr/bin/dpkg
查看>>
详解DNS的常用记录(下):DNS系列之三
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
sed单行处理命令奇偶行输出
查看>>
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
查看>>
VC++深入详解学习笔记1
查看>>
安装配置discuz
查看>>
CentOS7 64位小型操作系统的安装
查看>>
线程互互斥锁
查看>>
KVM虚拟机&openVSwitch杂记(1)
查看>>
win7下ActiveX注册错误0x80040200解决参考
查看>>