20190322_C#面向对象设计模式纵横谈

即刻关注,获取更多

关注公众号 N学无止界 获取更多

由于github禁止外链图片,所以把内容放到这里

C#面向对象设计模式纵横谈

面向对象设计模式与原则

  • 针对接口编程,而不是针对实现编程
  • 优先使用对象组合,而不是类继承
  • 封装变化点
  • 使用重构得到模式—设计模式的应用不宜先入为主

设计原则

  • 单一职责原则(SRP)
  • 开放封闭原则(OCP)
  • (里氏)Liskov替换原则(LSP)
  • 依赖倒置原则(DIP)
  • 接口隔离原则(ISP)
  • 组合重用
  • 迪米特(最小知识)原则

23种设计模式 (1-5,6-12,13-23)

1.Singleton单例模式

动机(Motivation)

在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性以及良好的效率
如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?
这应该是类设计者的责任,而不是使用者的责任

意图(Intent)

保证一个类仅有一个实例,并提供一个实例的全局访问点。

结构(Struct)

Singleton Struct

2.Abstract Factory抽象工厂模式

动机(Motivation)

在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作
如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列”具体对象创建工作的紧耦合?

意图(Intent)

提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们 的具体类。

结构(Struct)

Abstract Factory

3.Builder生成器模式

动机(Motivation)

在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合起来的算法却相对稳定。
如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?

意图(Intent)

将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

结构(Struct)

Builder

4.Factory Method工场方法模式

动机(Motivation)

在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是他们拥有比较稳定的接口。
如何应对这种变化?如何提供一种“封装机制”来隔离出“这个易变对象”的变化,从而保持系统中“其他依赖该对象的对象”不随着需求改变而改变?

意图(Intent)

定义一个用于创建对象的接口,让子类决定实例化那一个类。Factory Method使得一个类的实例化延迟到子类。

结构(Struct)

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_software

感谢打赏,我努力提供优质内容~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值