将model注册进单例中,每次用的时候从单例里面取

控制台程序示例:

单例的设计:

class Manager
{
private static Manager _instance = null;

public static Manager CreateInstance()
{
if (_instance == null)
{
_instance = new Manager();
}
return _instance;
}

private Manager()
{

}

Dictionary<string, BaseModel> dic = new Dictionary<string, BaseModel>();

public void ResisterModel(string modelName,BaseModel bm)
{
if (!dic.ContainsKey(modelName))
{
dic.Add(modelName,bm);
}
}

public BaseModel GetModel(string modelName)
{
if(dic.ContainsKey(modelName))
{
return dic[modelName];
}
return null;
}

public void RemoveModel(string modelName)
{
if(dic.ContainsKey(modelName))
{
dic.Remove(modelName);
}
}
}
}

调用地方的设计:

class Program
{
static void Main(string[] args)
{
Manager mm = Manager.CreateInstance();
mm.ResisterModel(model1.name,new model1());
mm.ResisterModel(model2.name,new model2());

model1 m1 = mm.GetModel(model1.name) as model1;
model2 m2 = mm.GetModel(model2.name) as model2;

Console.WriteLine(m1.GetName());
Console.WriteLine(m2.GetName());

Console.ReadKey();
}
}

此外,例子中使用的model和basemodel,

class BaseModel
{
public string name = string.Empty;
}

class model1:BaseModel
{
public static new string name = "model1";

public string GetName()
{
int a = 11;
return a.ToString();
}
}

class model2:BaseModel
{
public static new string name = "22";

public string GetName()
{
return name;
}
}

时间: 2024-08-25 09:30:10

将model注册进单例中,每次用的时候从单例里面取的相关文章

表单提交中的重复问题(表单令牌验证)

在日常的表单提交中,如果由于网络或其他原因,很容易出现同一个表单提交多次,此时可以使用表单令牌验证 在提交的表单里,增加多一个隐藏数据,token,该token由后台脚本生成(如:php使用md5(rand(1,99999999))) 然后将生成的值保持至session或文本中,在表单提交中,对该token进行准确性认证,以确定表单提交的唯一性

从单链表中删除最大的元素,单链表元素排序

public class LinkList { public Node head; public LinkList() { head = new Node(); head.next = null; } //尾插法 public void createByTail(int[] arr, int n) { Node tail = head; for(int i=0; i<n; i++) { Node c = new Node(arr[i]); tail.next = c; tail = c; } t

单例中懒汉和饿汉的本质区别

单例中懒汉和饿汉的本质区别在于以下几点: 1.饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变.懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的. 2.从实现方式来讲他们最大的区别就是懒汉式是延时加载,他是在需要的时候才创建对象,而饿汉式在虚拟机启动的时候就会创建,饿汉式无需关注多线程问题.写法简单明了.能用则用.但是它是加载类时创建实例(上面有个朋友写错了).所以如果是一个工厂模式.缓存了很多实例.那么就得考虑效率问

表单提交中get和post方式的区别

表单提交中get和post方式的区别有5点 1.get是从服务器上获取数据,post是向服务器传送数据. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程. 3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Requ

如何把Json格式字符写进text文件中

本篇一步一步学习怎样把显示于网页的json格式的字符串写进text文件中,并保存起来.学习到创建model, Entity, 序列化List<object>转换为json,显示于网页上.然后是把这些json字符串传至控制器的方法,写text文件并保存. 准备数据对象,创建model: 接下来创建Entity,数据实体,数据可以是从文件,数据库或是其它.下面的数据是Insus.NET写成静态.因此上例中只是演示而已. ASP.NET MVC程序开发,控制器是很不了的.我们创建一个控制器,今天已经

求有环单链表中的环长、环起点、链表长

1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表.指针slow 每次走1步,指针fast每次走2步.如果存在环,则指针slow.fast会相遇:如果不存在环,指针fast遇到NULL退出. 就是所谓的追击相遇问题: 2.求有环单链表的环长 在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每次走2步.在下次相遇的时候fast比slow正好又多走了一圈,也就是多走的距离等于环长. 设从第一次相遇到第二次相遇,设slow走了len步,则fast走

Yii表单验证中,提交前验证,不通过不提交

$form = $this->beginWidget('CActiveForm',array(         'id' => 'add_host',         'enableAjaxValidation' => false,         'enableClientValidation' => true,         'clientOptions' => array(                 'validateOnSubmit' => true  

详解JavaScript中的Url编码/解码,表单提交中网址编码

本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape,encodeURI / decodeURI和 encodeURIComponent / decodeURIComponent. 预备知识 foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/ \_______

13.删除单链表中重复的元素

13.删除单链表中重复的元素 思路: 用Hashtable辅助,遍历一遍单链表就能搞定.同高级函数9的原因,我不太会使用C++STL中的hash.而如果使用set集合来存储链表中的所有的值,实际上效率和每次重新遍历单链表是一样的.“用了c++标准库中的set来保存访问过的元素,所以很方便的就可以判断当前节点是否在set集合中,直接使用set提供的find函数就可以了.而且使用set的查找在时间复杂度上比较低.”我不太清楚STL中set集合的实现方式,如果是基于类似hash结构的话,那自然效率O(