Pyhton实现常用的23种设计模式
Posted 轻松学编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pyhton实现常用的23种设计模式相关的知识,希望对你有一定的参考价值。
一、概念
软件工程中,**设计模式**是指软件设计问题的**推荐方案**。
设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。
设计模式是高层次的方案,与具体实现细节无关(如算法,数据结构,网页等)。
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
设计模式可以提高代码的可重用性和可读性,增强系统的可靠性和可维护性,解决一系列的复杂问题,提高协作效率。
二、设计模式分类
经典的《设计模式》一书归纳出23种设计模式。
这23种模式又可归为,创建型、结构型和行为型3大类。
1.创建型模式
提供实例化的方法,为适合的状况提供相应的对象创建方法。
社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。
因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。
这里有5个具体的创建型模式,它们分别是:
工厂方法模式【Factory Method】
抽象工厂模式【Abstract Factory】
创建者模式【Builder】
原型模式【Prototype】
单例模式【Singleton】
2、结构型模式
通常用来处理实体之间的关系,使得这些实体能够更好地协同工作。
在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,
因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。
这里有7个具体的结构型模式可供研究,它们分别是:
外观模式【Facade】
适配器模式【Adapter】
代理模式【Proxy】
装饰模式【Decorator】
桥接模式【Bridge】
组合模式【Composite】
享元模式【Flyweight】
3、行为型模式
用于在不同的实体间进行通信,为实体之间的通信提供更容易,更灵活的通信方法。
在对象的创建和对象的结构问题都解决了之后,就剩下对象的行为问题了。
如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高。
这里有11个具体的行为型模式,它们分别是:
模板方法模式【Template Method】
观察者模式【Observer】
状态模式【State】
策略模式【Strategy】
职责链模式【Chain of Responsibility】
命令模式【Command】
访问者模式【Visitor】
调停者模式【Mediator】
备忘录模式【Memento】
迭代器模式【Iterator】
解释器模式【Interpreter】
三、设计模式六大原则
1、单一原则(Single Responsibility Principle)
一个类只负责一项职责,尽量做到类只有一个行为原因引起变化;
业务对象(BO business object)、业务逻辑(BL business logic)拆分
2.里氏替换原则(LSP liskov substitution principle)
子类可以扩展父类的功能,但不能改变原有父类的功能;
目的:增强程序的健壮性。实际项目中,每个子类对应不同的业务含义,使父类作为参数,传递不同的子类完成不同的业务逻辑。
3.依赖倒置原则(dependence inversion principle)
面向接口编程;(通过接口作为参数实现应用场景)
依赖于抽象而不依赖于具体。
抽象就是接口或者抽象类,细节就是实现类
依赖倒置原则定义:
上层模块不应该依赖下层模块,两者应依赖其抽象
抽象不应该依赖细节
细节应该依赖抽象
接口负责定义public属性和方法,并且申明与其他对象依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑。
4.接口隔离(interface segregation principle)
建立单一接口;(扩展为类也是一种接口,一切皆接口)。
使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度。
降低依赖,降低耦合。
定义:
客户端不应该依赖它不需要的接口;
类之间依赖关系应该建立在最小的接口上;
5.迪米特原则(law of demeter LOD)
最少知道原则,尽量降低类与类之间的耦合;
一个对象应该对其他对象有最少的了解,即一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6.开闭原则(open closed principle)
用抽象构建架构,用实现扩展原则;
开闭原则就是说对扩展开放,对修改关闭。
一个软件实体通过扩展来实现变化,而不是通过修改原来的代码来实现变化。实现一个热插拔的效果。
开闭原则是对软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。
以上是关于Pyhton实现常用的23种设计模式的主要内容,如果未能解决你的问题,请参考以下文章
pyhton—opencv直线检测(HoughLines)找到最长的一条线