设计模式
文章平均质量分 87
用.net 自己手动实现一边23种设计模式
q__y__L
学习方向是大数据,模式识别。。。微
展开
-
关于枚举类(Enumeration Class )
在微软的微服务架构案例eshopOnContainer中,对于订单的状态是这样的: 微软没有直接使用传统的Enum关键字,而是自定了以一个抽象类:Enumeration。最开始,我有些不解,为什么么要“舍近求远”?其实微软官方在此文中提到了枚举类,理由是启动面向对象语言的所有丰富功能。解释的很晦涩,虽然给出了代码案例,但是还是让人很难体会到其中奥妙。直到最近又看了这个博客,似乎才深入理解了一些。结合一个例子说明,可能更好! 假设你要去买咖啡,正常情况下会有“大、中、小”三种原创 2022-12-06 01:45:39 · 877 阅读 · 0 评论 -
Fluent Facede Pattern(外观模式)
外观模式的用意是为子系统提供一个集中化和简化的沟通渠道,而不是向子系统加入新的行为,新的行为的增加应该通过修改原有子系统类或增加新的子系统类来实现,不能通过外观类来实现。现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好几个较小的子系统了,但是仍然可能会存在这样的问题:子系统内有非常多的类,客户端往往需要和许多对象打交道之后 才能完成想要完成的功能。接下来我们定义Car的外观,我们将外观定义放在两类中,一类定义颜色,品牌,门数,一类定义生产城市地址。原创 2022-11-11 16:45:53 · 289 阅读 · 0 评论 -
递归泛型(recursive generic)
原因很简单,SetName函数返回的对象类型是EmployeeInfoBuilder,无法调用EmployeePositionBuilder类的函数成员。当然我们可以将Employee对象以构造注入的方式传入进去,但是这样就违背了我们的Fluent原则。稍微说明一下的就是,这么做一方面是不好理解,另一方面可能对性能有一定的影响,我认为这个派生链条不宜过长,希望有懂的朋友可以指点一下。对于上面两个泛型类,我们无法直接定义,只能借助更高层次的派生类构造,且这个类不能再是泛型,也就是泛型链的终点。原创 2022-11-11 11:48:27 · 431 阅读 · 0 评论 -
C# 中的守卫语句(GuardClause)
一般而言,我们认为代码的最小单元就是一个函数或者方法,我们写出的代码应该能让人迅速理解,所以这要求我们的代码行数不要太多、命名清晰规范、功能单一(一个方法只做一件事)。导致代码复杂性增加的一个原因是条件判断,这时代码中往往会出现或者语句,如果没有组织好你的程序结构,这两种语句很容易将你的代码从简洁易懂的变成冗长,模糊,甚至低效的。所以有一个办法是通过使用守卫语句(Guard Clause)来避免这些问题。原创 2022-09-13 14:14:43 · 595 阅读 · 0 评论 -
建造者模式
今天我们讨论一下 Builder 建造者模式,这个 Builder,其实和模板模式非常的像,但是也有区别,那就是在模板模式中父类对子类中的实现进行操作,在父类之中进行一件事情的处理,但是在 Builder 模式之中,父类和子类都不用关心怎么处理,而是用另一个类来完成对这些方法的有机组合,这个类的职责就是监工,规定了到底要怎么样有机的组合这些方法。...原创 2022-08-13 23:53:41 · 117 阅读 · 0 评论 -
原型模式(prototype pattern)
原型模式其实很简单,又可以成为克隆模式。想象你要造一架飞机,如果你要重头到位掌握造飞机的核心技术,那么你要从力学,材料学开始学起。但是你想快点看到成果,那你就把对应的零件买回来自己组装一个就好了。...原创 2022-08-12 17:20:43 · 189 阅读 · 0 评论 -
抽象工厂模式
为抽象工厂中相互依赖的每种产品定义抽象接口对象,也可以这样说,有几种产品,就要声明几个抽象角色,每一个抽象产品角色和一种具体的产品相匹配。原创 2022-08-12 12:04:11 · 237 阅读 · 0 评论 -
工厂方法模式
在工厂方法中,用户只需要知道所要产品的具体工厂,无须关系具体的创建过程,甚至不需要具体产品类的类名。在系统增加新的产品时,我们只需要添加一个具体产品类和对应的实现工厂,无需对原工厂进行任何修改,很好地符合了“开闭原则”。...原创 2022-08-12 10:36:30 · 118 阅读 · 0 评论 -
简单工厂模式
简单工厂模式(Simple Factory Pattern)属于类的创建型模式,又叫是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。。原创 2022-08-11 18:24:21 · 394 阅读 · 0 评论