个人觉得设计模式只是一种设计方式的总结,正如大多数人说的用了不一定就程序很好。好的程序是有标准的:功能性,稳定性,效率性,可维护和可扩展性,以及可读性。把简单的功能写的复杂人人都会,复杂的功能用简单的代码描述出来,却不是个个都行。所以设计模式为我们提供了一种方式和一种标杆。
6.代理模式:书中描述是代理类实现与被代理的类相同的接口,代理类通过合成被代理类,就实现被代理的类的功能,有点象装饰模式,只是装饰强调对原有功能的扩展,而代理强调了隐蔽功能。

Code
interface ISubject
{
void Do();
}
public Class RealSubject:ISubject
{
void Do();
}
public Class Proxy:ISubject
{
private RealSubject realSubject;
public void Do
{
if(realSubject==null)
{
realSubject=new RealSubject();
}
realSubject.Do();
}
}
static void Main(string [] args)
{
Proxy proxy=new Proxy();
proxy.Do();
}
这个让我联想到多层架构中的IDAL,BLL,DALFactory三层,DALFactory实现IDAL定义的接口,而BLL间接实现了IDAL接口中的功能,提供给表现层使用,同时BLL也扩展了其它功能,是不是有点代理的味道。我觉得大多数人看到代理模式就会想到WebService中的代理类的用途。我觉得它可以用在业务类软件中,用来对业务算法进行封闭,然后把算法集中放在一个远程可管理的服务器上。这样不会被使用者或者故意破坏者得知其中的业务细节。
7.工厂模式:讲到工厂模式就得先介绍简单工厂模式,他们应该是算一个系列吧。简单工厂是通过继承同一接口而实现不同对象,例如:

Code
interface ICal
{
void Cal();
}
public class Add:ICal
{
public void Cal(){};
}
public class Sub:ICal
{
public void Cal(){};
}

而其实例化需要通过判断语句实现。

Code
public class CreateInstance
{
public ICal CreateInstance(string opString)
{
switch(opString)
{
case"+":
{
return new Add();
}
case"-":
{
return new Sub();
}

}
}
}
工厂模式就是为了解决其实例化的问题产生的,因为上面的实例化违反了开闭原则,随着需求的增加要不停的增加判断
分支。所以工厂模式就增加了工厂类,这样可以同一类的实例化,同时也对客户端进行统一调用。代码如下:

Code
interface Factory
{
ICal CreateInstance();
}
public class FactoryAdd:Factory
{
public ICal CreateInstance()
{
return new Add();
}
}
public class FacotrySub:Factory
{
public ICal CreateInstance()
{
return new Sub();
}
}
public Class Client()
{
ICal=FacotryAdd.CreateStance();//实例化
ICal.Do();//调用方法
}
这样就实现了对简单工厂的实例化问题的解决。
8.原型模型:主要是通过对于已有对象进行复制,封闭复制细节。.net中主要通过实现System.ICloneable对实例进行的复制,相关技术也就深拷贝和浅拷贝了,用的很少。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述