系统架构,如何抽象出通用的模块?实现通用化?

nosuchtracter 2009-07-17 07:58:17
现在有个需求,要把一些功能独立出来成一个服务,尽量通用化
比如说对信息有增加、删除、修改、列表
评论也有增加、删除、’列表等功能
现在想把这些功能整合成一个模块。对外部提供统一的接口。
并且尽量在不影响现有功能的情况下,还要考虑扩展性。
是不是要用的设计模式?
现在用了单例模式,要不要用的抽象工厂?
利用接口?
或许我对通用化理解有点错误?
希望各位指教
谢谢大家
...全文
255 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
winner2050 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 nosuchtracter 的回复:]
4楼  wuyq11
你说的方法里面利用了反射
如果数据量访问特别大的话,利用反射会不会支撑不住?
我这个功能模块访问量很大的。每天应该有几千万吧
[/Quote]

自己給自己下套。
winner2050 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 nosuchtracter 的回复:]
4楼  wuyq11
你说的方法里面利用了反射
如果数据量访问特别大的话,利用反射会不会支撑不住?
我这个功能模块访问量很大的。每天应该有几千万吧
[/Quote]

瞎掰!

自己給自己下套。
nosuchtracter 2009-07-20
  • 打赏
  • 举报
回复
4楼 wuyq11
你说的方法里面利用了反射
如果数据量访问特别大的话,利用反射会不会支撑不住?
我这个功能模块访问量很大的。每天应该有几千万吧
sjt000 2009-07-20
  • 打赏
  • 举报
回复
这个只能根据项目和经验来处理了,没有通用的方法
sjt000 2009-07-20
  • 打赏
  • 举报
回复
这个只能根据项目和经验来处理了,没有通用的方法
youlanbeilei 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nosuchtracter 的回复:]
领导的意思是指功能通用化,以后所有的都可以调用这些模块
[/Quote]
完全的通用化,这个目标...
jdbcodbc 2009-07-20
  • 打赏
  • 举报
回复
up
nosuchtracter 2009-07-20
  • 打赏
  • 举报
回复
100分,咋就没人来呢
kirinboy 2009-07-20
  • 打赏
  • 举报
回复
其实LZ所需要的,或者说LZ领导所要求的,不过就是个SqlHelper
nosuchtracter 2009-07-20
  • 打赏
  • 举报
回复
反射速度确实要慢一点吧?
nosuchtracter 2009-07-19
  • 打赏
  • 举报
回复
貌似周末人比较少哦
nosuchtracter 2009-07-18
  • 打赏
  • 举报
回复
使用的是oracle
感觉上面说的都是些基础的。
通用化这方面还是没怎么发展
nosuchtracter 2009-07-18
  • 打赏
  • 举报
回复
领导的意思是指功能通用化,以后所有的都可以调用这些模块
mbh0210 2009-07-18
  • 打赏
  • 举报
回复
楼主所指的通用化是啥?
paulin 2009-07-18
  • 打赏
  • 举报
回复
如果做到了统一接口了,针对抽象编程,还不能通用化吗..
  • 打赏
  • 举报
回复
模式跟框架是没法比的。如果你使用SQL Server,可以使用Linq to SQL,2小时就可以精通。
wuyq11 2009-07-17
  • 打赏
  • 举报
回复
写DAL,IDAL,Model,数据库操作类,DALFactory实现构建
在数据库操作通过工厂模式构建,实现兼容各种数据库
public static DBOperator Create()
{
return Create("DALClass");
}

public static DBOperator Create(string strKey)
{
string str = "UniversalDAL";
string str2 = ConfigurationSettings.AppSettings[strKey];
string typeName = str + "." + str2;
return (DBOperator)Assembly.GetExecutingAssembly().CreateInstance(typeName);
}
public static IaddresslistDAL addresslistDALInstance()
{
string CacheKey = DALFactory._path + ".addresslistDAL";
object objType = DALFactory.GetInstance(CacheKey);
return (IaddresslistDAL)objType;
}

public static DBOperator CreateViaName(string strClassName)
{
string typeName = "UniversalDAL." + strClassName;
return (DBOperator)Assembly.GetExecutingAssembly().CreateInstance(typeName);
}
看看petshop或到51aspx.com里很多实例
saisky 2009-07-17
  • 打赏
  • 举报
回复
1L的方法比较容易扩展
其实设计模式主要就是讲究扩展性,松藕和
用工厂还是不错的,针对接口开发
nosuchtracter 2009-07-17
  • 打赏
  • 举报
回复
感谢xuyiazl的回复
你的写法我知道,利用工厂模式。
不知道有没有更好的方法?
谢谢
xuyiazl 2009-07-17
  • 打赏
  • 举报
回复

namespace Login
{
public interface ILogin
{
void Login(string _userName, string _passWord);
}
}


namespace Login
{
public class IFactory
{
public static ILogin GetLoginInName(string _loginName)
{
switch (_loginName)
{
case "CommLogin":
return new CommLogin();
case "TopLogin":
return new TopLogin();
default:
return new CommLogin();
}
}
}
}



namespace Login
{
public class TopLogin : ILogin
{
public void Login(string _userName, string _passWord)
{
Console.WriteLine("TopLogin");
}
}
}



namespace Login
{
public class CommLogin : ILogin
{
public void Login(string _userName, string _passWord)
{
Console.WriteLine("commLogin");
}
}
}



namespace Login
{
class Program
{
static void Main(string[] args)
{
ILogin i = IFactory.GetLoginInName("CommLogin");
i.Login("comm","commpass");
ILogin ii = IFactory.GetLoginInName("TopLogin");
ii.Login("top", "toppass");
Console.Read();
}
}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧