ASP_NET设计模式

asp_net 模式
 单体模式:
单体模式(Singleton)是经常为了保证应用程序操作某一全局对象,让其保持一致而产生的对象,例如对文件的读写操作的锁定,数据库操作的时候的事务回滚,还有任务管理器操作,都是一单体模式读取的。   创建一个单体模式类,必须符合三个条件:   1:私有构造函数(防止其他对象创建实例);   2:一个单体类型的私有变量;   3:静态全局获取接口   下面我写一个类,为了看是不是单体,就加了一个计数器,如果是同一个类,那么这个类的计数每次调用以后就应该自动加一,而不是重新建对象归零:   .NET c# 单体模式 
using System; 
using System.Threading; 
public class Singleton

    private int ObjCount=0; 
    private Singleton()
    { 
        Console.WriteLine("创建对象"); 
    } 
    private static Singleton objInstance = null; 
    public static Singleton getInstance() 
    { 
        if (objInstance==null) objInstance=new Singleton(); 
        return objInstance; 
    } 
    public void ShowCount()
    { 
        ObjCount++; 
        Console.WriteLine("单个对象被调用了{0}次",ObjCount); 
    } 
}; 




public class ConsoleTest

    public static void Main(string[] args)
    { 
        Console.WriteLine("开始执行单体模式"); 
        for(int i=0;i<5;i++)
        { 
            Singleton.getInstance().ShowCount(); 
        } 
        Console.ReadLine(); 
    } 
}; 
观察者模式:
观察者模式可以控制哪些对象类需要去执行,比如说,ATM取款机取钱,首先邮箱要能接受到,同时手机也要能接受到,这个时候我们可以把手机对象和邮箱对象看作观察者(被动方)而执行这个消息的ATM取款机是主动放,也叫做被观察者。观察者模式的好处是我们可以随时添加设备或者对象执行我们想要的效果。废话不说,看下面的代码。
//j接受方的接口
interface IRecive
    {
        void ReciveData(string content); 
    }
//发送方的接口 
    interface ISend
    {
        void SendData(string content);
        void AddObserver(IRecive obj);
    }
//被观察的对象 
    class Observer : ISend
    {
        Mail _mailer;//观察的对象(存放观察者)
        TelPhone _TelPhone;//观察的对象(存放观察者)
        List<IRecive> _list = new List<IRecive>();//创建观察者列表
        public Observer()
        {
            _mailer = new Mail();
            _TelPhone = new TelPhone();
        }
        /// <summary>
        /// 添加观察者,给观察者发送消息
        /// </summary>
        public void AddObserver(IRecive obj)
        {
            _list.Add(obj);
        }


        public void SendData(string content)
        {
            //给每个观察者发送消息
            foreach (var item in _list)
            {
                item.ReciveData(content);
            }
        }
    }
    /// <summary>
    /// 一个邮箱发送支持类(观察的对象)
    /// </summary>
    public class Mail : IRecive
    {
        public void ReciveData(string content)
        {
            Console.WriteLine("我是邮箱端,我接受的内容是:" + content);
        }
    }
    /// <summary>
    /// 一个手机发送消息支持类(观察的对象)
    /// </summary>
    public class TelPhone : IRecive
    {
        public void ReciveData(string content)
        {
            Console.WriteLine("我是手机端,我接受的内容是:" + content);
        }
    } 
//执行
  class Program
    {
        static void Main(string[] args)
        {
            Observer gc = new Observer();
            gc.AddObserver(new Mail());
            gc.AddObserver(new TelPhone());
            gc.SendData("test");
            Console.ReadLine();
        }
    } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值