设计模式一(C#语言)

设计模式一(C#语言)

《大话设计模式》阅读笔记。

1、 简单工厂模式

简单工厂模式为了解决对象的创建问题,利用OO的继承多态的特性,添加一种新的工厂方法。对修改是封闭的对拓展是开发的原则参考4、开闭原则。影响小改动小 耦合小,已于拓展。
也是面向对象基本的思想,通多封装、继承、多态把程序的耦合度降低。
代码目录:简单工厂


2、策略模式

商城打折和运算符的本质区别是,打折是一个算法策略会经常改变。运算符可以是对象,改变小但需要拓展。运算符生成工厂可以,对应收费对象生成工厂会经常改变。
相对与简单工厂在主程序中定义工厂,策略模式将工厂的定义又封装了一层类独立于主程序,和主程序的耦合更小,根据策略不通的初始化不同。
商城促销,策略和简单工厂结合的类:cashcontext类,不仅是简单工厂的返回一个工厂方法对象,而是结合策略建立了工厂方法对象后直接放回方法结果。
区别:简单工厂模式需要主程序认识两个类:收费服务对象、收费服务对象工厂类
策略模式需要主程序认识一个类:上下文,(收费服务对象、收费服务对象工厂类被封装起来了)耦合更低,算法的父类也不然主程序认识。
策略模式封装的主程序的变化,主程序消除了swich的判断由客户端承担选择转移到上下文context承担,有利于1、解耦2、context中不同策略析取共同部分到策略父类中3、策略单独的单元测试。

抽象工厂中的反射可以消除context中的swich判断?那再修改策略时更方便了


3、单一职责原则

就一个类而言,应该仅有一个引起它变化的原因。
功能都写在一个类里面了,维护麻烦,不灵活,复用不可能。
界面类和业务逻辑类的分离。软件设计的许多工作就是分类软件的职责。所以软件项目首要的是想清楚架构的分工,设计架构,设计好后再编码。


4、开放-封闭原则

软件实体:类、模块、函数等等,应该可以拓展,但是不可以修改。改就是擦除以前正确的工作量,效率上也是低下的。

需求是一定会变化的,对于改变的需求要保持相对稳定的软件。
写一个类时,时刻考虑尽可能让这个类足够好,写好就不会修改了(绝对的封闭是不可能的,设计人员必须对应该对那些变化封闭做出选择,用抽象隔离这些变化)。新需求来了需要拓展新的类。
一开始不可能猜对所有的变化,所有等到变化时立即采取行动。不摔第二跤,有时未预想到的变化可能引起软件的重构。
查明可能变化的等待时间越长,要创建正确的抽象就越困难。
开闭原则是OO的核心思想,OO的巨大好处:可维护、可扩展、可复用、灵活...只对频繁变化的那些部分抽象,拒绝不成熟的抽象同样重要。


5、依赖倒转原则和里式代换原则

抽象不应该依赖细节,细节应该依赖于抽象。---说白就就是应该针对接口编程,不要针对实现编程。台式机的部件都是针对接口设计的,硬件等万物也是遵循同样的规律。
软件中:高层模块不应该依赖与低层模块,他们都应该依赖与抽象模块(接口)。例子:业务逻辑需要调用数据库他们都是实体,业务逻辑不依赖数据库。接口是稳定的。
里氏代换原则说明了,依赖抽象层是可靠的,稳定不变的。----一个软件
正式因为里氏代换原则,才使得在不修改父类模块的情况下实战可扩展。
程序中所有的依赖关系都终止于抽象类或者接口,那就是面向对象的设计,反而依赖与细节就是过程化的。

posted @ 2021-04-12 13:18  wuya178  阅读(57)  评论(0)    收藏  举报