即刻关注,获取更多
关注公众号 N学无止界 获取更多
由于github禁止外链图片,所以把内容放到这里
C#面向对象设计模式纵横谈
面向对象设计模式与原则
- 针对接口编程,而不是针对实现编程
- 优先使用对象组合,而不是类继承
- 封装变化点
- 使用重构得到模式—设计模式的应用不宜先入为主
设计原则
- 单一职责原则(SRP)
- 开放封闭原则(OCP)
- (里氏)Liskov替换原则(LSP)
- 依赖倒置原则(DIP)
- 接口隔离原则(ISP)
- 组合重用
- 迪米特(最小知识)原则
23种设计模式 (1-5,6-12,13-23)
1.Singleton单例模式
动机(Motivation)
在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性以及良好的效率
如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?
这应该是类设计者的责任,而不是使用者的责任
意图(Intent)
保证一个类仅有一个实例,并提供一个实例的全局访问点。
结构(Struct)

2.Abstract Factory抽象工厂模式
动机(Motivation)
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作
如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列”具体对象创建工作的紧耦合?
意图(Intent)
提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们 的具体类。
结构(Struct)

3.Builder生成器模式
动机(Motivation)
在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合起来的算法却相对稳定。
如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?
意图(Intent)
将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
结构(Struct)

4.Factory Method工场方法模式
动机(Motivation)
在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是他们拥有比较稳定的接口。
如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变?
意图(Intent)
定义一个用于创建对象的接口,让子类决定实例化那一个类。Factory Method使得一个类的实例化延迟到子类。

最低0.47元/天 解锁文章
153





