Tag: design patterns

什么是用户界面设计模式中的模型,如MVC,MVP,MVVM?

我已经看过许多使用模型 – 视图UI设计模式的教程和示例,并且它们都以非常不同的方式实现它们,尤其是模型部分。 在一些示例中,Model是某些服务层中某些数据访问层(如存储库模式)中的数据(某些数据库的实际对象表示)… 如果有人告诉你他在他的应用程序中使用MV *模式,它会告诉你有关应用程序设计的内容吗? 它是否在对象图中维护数据库的内存表示,并将其用作数据源或某些数据访问层来查询数据库… 您将选择什么作为面向数据的智能客户端应用程序的模型,主要包含带有表的选项卡页面?

如何保护dll函数不被我的应用程序使用?

我想限制其他应用程序使用我编写的dll函数。 例如。 如果我有data.dll包含两个函数。 public void InsertInToDatabse(); public void ClearDatabase(); 现在,如果我的应用程序调用了InsertInToDatabse()并正在做其他工作,那么如果其他应用程序通过引用database.dll调用ClearDatabase(),那么数据库将被排除。那么如何限制对这些函数forms的调用第三方申请?

const int而不是enum的列表

我开始研究一个大的c#代码库,发现使用了一个带有几个const int字段的静态类。 这个类的行为与枚举完全相同。 我想把这个类转换成一个实际的枚举,但是权力可以说是没有。 我想转换它的主要原因是我可以将枚举作为数据类型而不是int。 这对可读性有很大帮助。 是否有任何理由不使用枚举并使用const int代替? 目前这是代码的方式: public int FieldA { get; set; } public int FieldB { get; set; } public static class Ids { public const int ItemA = 1; public const int ItemB = 2; public const int ItemC = 3; public const int ItemD = 4; public const int […]

C#中派生类的可视化

我有一个基类(表示一个充满小球体的真实世界容器)和一些派生类。 这很好用。 我的问题是如何进行可视化。 我有一个UserControl可视化基类。 对每个派生类都有一个派生UserControl的最佳解决方案吗? 或者只让一个人为所有人工作更好? 编辑: 显然我不够具体。 总有相同的基本外观:内部有很多圆圈的矩形。 类之间的区别在于容器的填充方式。 一种类型将种子放在中间并在树状结构中创建其他球体 – 在这种情况下,应绘制父母与子女之间的连接线。 一般来说,对于每种衍生类型,应该有类别的可视化与一些专业的一致外观。

策略模式与dependency injection

策略模式与dependency injection有何不同? 即以下是您可以使用策略模式执行的操作: class Foo{ private readonly ISortAlgo _sortAlgo; public Foo(ISortAlgo sortAlgo) { _sortAlgo = sortAlgo; } public void Sort() { _sortAlgo.sort(); } } 使用DI你可以做同样的事情,基本上你可以有构造函数,setter,接口等注入。 它会产生与战略模式相同的效果。 我知道DI也有其他原则,例如松耦合,可测试性,布线等。 在实施方面,我没有看到太大的区别。 策略模式和DI有什么区别?

通用的多层数据访问模式?

我一直在玩一些用于n层数据访问的新模式,并且遇到了一个看起来非常灵活且易于实现的模式。 基本上,我需要一个可以在运行中使各种数据层可插拔/交换的解决方案 – 即从DB进行基本数据访问,分布式缓存,本地缓存等。 下面的代码很容易重复使用并且效率极高 – 只比我以前完全硬编码的解决方案长几个小时。 这看起来怎么样? 有没有什么办法可以更好地实施? 任何一般的想法或批评? 那些使用类似模式的人的任何输入? 基类: public class DataAdapterFactory where T : class { private DataAdapter Adapter; public DataAdapterFactory(DataAdapterBase Base) { Adapter = Base; } public void Extend() where U : DataAdapterExtender, T, new() { DataAdapterExtender Extender = new U(); Extender.BaseAdapter = Adapter as T; Adapter = Extender; } […]

如何通过t4生成自定义类?

我试图通过T4生成以下代码。 using System; using MyDAL; namspace Test { // Select… public partial class MyCustomer { public int id { get ;set;} public string name { get ;set;} public string surname { get ;set;} public MyCustomer() { } public List GetById(int id) { // do something… } } // Delete,Update,Save public partial class MyCustomer { public […]

将域服务实现为存储库的扩展方法

我对域服务的理解是他们执行超出相关存储库边界的任务(CRUD相关任务)。 由于.Net允许扩展方法,为什么不将域服务实现为存储库的扩展方法,从而减少在需要时实例化存储库和服务的需要? 我很感激任何评论。

OOP最佳实践:Employee.GetCars()vs Cars.GetByEmployee()

鉴于Company , Employee和Car类,检索与公司或员工相关联的汽车的方法的首选做法是什么? Employee.GetCars(params…) Company.GetCars(params…) 要么: Cars.GetByEmployee(params…) Cars.GetByCompany(params…) 第一种方法是我一直使用的方法,对我来说似乎总是最直观的。 但在看到使用第二种方法的大型代码库之后,我必须承认它正在增长。 我真正喜欢第二种方法的两件事是: 它将所有与Car相关的代码组合在一起成为一个文件,使代码更加模块化,更易于维护。 有一个直观的逻辑,让任何方法都将Car的返回值(或者更像是List )分组到Car类中。 有没有最佳实践涵盖这个?

如何设计Repository模式以便以后轻松切换到另一个ORM?

我是存储库模式的新手,但我尝试过,我的目标是制作一个设计,只需一些编辑“dependency injection或配置编辑”就可以轻松地切换到另一个ORM,而无需触及其他解决方案层。 我达到了这个实现: 这是代码: public interface IRepository { T Get(int key); IQueryable GetAll(); void Save(T entity); T Update(T entity); // Common data will be added here } public interface ICustomerRepository : IRepository { // Specific operations for the customers repository } public class CustomerRepository : ICustomerRepository { #region ICustomerRepository Members public IQueryable GetAll() { DataClasses1DataContext […]