计算机是为了让人们变轻松而承担现实世界中一部分工作的机器,但现实世界与软件之间存在着很大的沟壑,为了填补这个沟壑,我们需要进行3个阶段的工作,即「业务分析」、「需求定义」、「设计」,而使用UML的建模就是顺利推进这些工作的技术——这便是使用设计模式的目的 。
在谈如何使用设计模式之前,人邮君先带大家来弄清楚,什么是面向对象 。
什么是面向对象简单说在程序中一切都是对象 。对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象,汽车是一个对象,汽车轮胎也是一个对象 。
面向对象是一种自上而下的设计,先设计组件再完成拼装 。比如,我们呀先造轮胎,造发动机这些汽车零件,最后再拼装成汽车 。这就是面向对象编程 。
面向对象的设计离不开设计模式,使用设计模式可以重构整体架构,提高代码复用性,较少冗余 。
设计模式三大特性、六大原则、23种模式听起来很高大上,实际上,在我们生活中和面向对象编程中,你肯定不知不觉的已经使用过很多设计模式 。比如某村大喇叭广播了,谁谁家狗丢了,全体村民监听这次广播,会对自己感兴趣的消息做出对应的反应,如果不感兴趣直接忽略 。这就是我们说的监听者模式 。
在使用设计模式时,可以通过了解三大特性、六大原则与23种模式,来帮助大家找到正确使用设计模式的根本逻辑 。
![如何避免过度设计,正确地使用设计模式?](http://img.jiangsulong.com/220421/05552H9A-0.jpg)
文章插图
一、三大特性封装:把数据和函数封装到一个类里,体现类内和类外 。
继承:由于有了封装,需要通过继承在类之间复用代码 。
多态:Python本身是一门多态语言,因此不需去处理多态的问题 。JAVA中则会区分虚类和普通类 。
因此这三个特性是一个递进的关系 。
二、六大原则
- 开闭原则(Open Close Principle)
- 里氏代换原则(Liskov Substitution Principle)
- 依赖倒转原则(Dependence Inversion Principle)
- 接口隔离原则(Interface Segregation Principle)
- 迪米特法则(最少知道原则)(Demeter Principle)
- 合成复用原则(Composite Reuse Principle)
三、23种设计模式1.策略模式-Strategy 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户 。
2.装饰模式-Decorator 动态的给一个对象添加有一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活 。
3.代理模式-Proxy 为其他对象提供一种代理以控制对这个对象的访问 。
4.工厂方法模式-Factory method 定义一个拥有创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类 。
5.原型模式-Prototype 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 。
6.模板方式模式-Template method 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 。
推荐阅读
- 如何为机器学习工程设计Python接口
- 老鹰茶如何泡,海马宫茶属于哪类茶
- 如何和红颜知己相处
- 教你如何鉴别真假茶,雪菊茶真假鉴别
- 如何清除文件中的数据?
- 喝茶切勿过度联想,喝茶能治痛风吗
- 冬季如何防治老年人慢性支气管炎
- 立冬日出生的人有什么说法吗? 立冬出生的人命运如何
- 马恩岛猫如何选购
- 皇宫里的妃子是怎么生活的 皇帝是如何搞妃子的