首页 > 编程知识 正文

python模板方法模式的简单介绍

时间:2023-12-11 16:24:15 阅读:314547 作者:DLDY

本文目录一览:

Python有设计模式么

Python设计模式主要分为三大类:创建型模式、结构型模式、行为型模式;三 大类中又被细分为23种设计模式,以下这几种是最常见的。

单例模式:是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个是实例时,单例对象就能派上用场。单例对象的要点有三个:一是某个类只能有一个实例;二是它必须自行创建整个实例,三是它必须自行向整个系统提供这个实例。

工厂模式:提供一个创建对象的接口,不像客户端暴露创建对象的过程,使用一个公共的接口来创建对象,可以分为三种:简单工厂、工厂方法、抽象工厂。一个类的行为或其算法可以在运行时更改,这种类型的设计模式属于行为型模式。

策略模式:是常见的设计模式之一,它是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。换句话来讲,就是针对一个问题而定义出一个解决的模板,这个模板就是具体的策略,每个策略都是按照这个模板进行的,这种情况下我们有新的策略时就可以直接按照模板来写,而不会影响之前已经定义好的策略。

门面模式:门面模式也被称作外观模式。定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式注重统一的对象,也就是提供一个访问子系统的接口。门面模式与模板模式有相似的地方,都是对一些需要重复方法的封装。但本质上是不同的,模板模式是对类本身的方法的封装,其被封装的方法也可以单独使用;门面模式,是对子系统的封装,其被封装的接口理论上是不会被单独提出来使用的。

python面试一般问什么常用设计模式

1.设计模式介绍

设计模式(Design Patterns)

——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

2. 设计模式分类

经典的《设计模式》一书归纳出23种设计模式,这23种模式又可归为,创建型、结构型和行为型3大类

2.1.创建型模式

前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:

简单工厂模式(Simple Factory);

工厂方法模式(Factory Method);

抽象工厂模式(Abstract Factory);

创建者模式(Builder);

原型模式(Prototype);

单例模式(Singleton)。

说明:严格来说,简单工厂模式不是GoF总结出来的23种设计模式之一。

2.2 结构型模式

在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:

外观模式(Facade);

适配器模式(Adapter);

代理模式(Proxy);

装饰模式(Decorator);

桥模式(Bridge);

组合模式(Composite);

享元模式(Flyweight)

2.3 行为型模式

在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高,这里有11个具体的行为型模式可供研究,它们分别是:

模板方法模式(Template Method);

观察者模式(Observer);

状态模式(State);

策略模式(Strategy);

职责链模式(Chain of Responsibility);

命令模式(Command);

访问者模式(Visitor);

调停者模式(Mediator);

备忘录模式(Memento);

迭代器模式(Iterator);

解释器模式(Interpreter)。

3. 设计模式的六大原则

1、开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科

3、依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

5、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。

python什么是设计模式

Python软件开发中引入设计模式是由生活中的一些实例启发而来的。例如,有2个小朋友Alice和Jack,去麦当劳点餐。Alice不了解麦当劳的套餐模式,于是想了一下,跟服务员说:“我要一个麦辣鸡腿堡、一个薯条和一杯可乐”。而Jack经常吃麦当劳,他也想点和Alice一样的餐品。Jack发现其实Alice点的就是麦当劳的A套餐,于是他直接和服务员说:“给我一个A套餐”。

从上面的事例中可以看出,Jack的点餐效率高,因为Jack和服务员都了解麦当劳的套餐模式,沟通起来效率自然就高。那么在这个生活案例中,创建套餐是提高点餐效率的可重用解决方案。它会根据客户的需求和餐品的被点频次制定出符合不同人群的套餐。套餐可以重复被更多的人去点,因此大大提高了顾客与服务员之间的沟通效率。

同理,在软件开发世界里,本来没有设计模式的,用的人多了,也便总结出了设计模式。这就是设计模式的由来。设计模式针对同一情境,众多软件开发人员经过长时间总结,便得到了最佳可重用解决方案。这个可重用解决方案解决了软件开发过程中常见的问题,拥有固定的术语,因此交流起来就方便了很多。

综上,设计模式是软件开发过程中共性问题的可重用解决方案。设计模式的内涵第一是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。第二是用来解决共性问题。设计模式的外延有:单例模式、工厂模式、适配器模式、代理模式等。据悉,现用的设计模式有24种,随着时代的发展,软件编程可能会遇到新的场景,设计模式会越来越丰富。

先看一个设计模式中最基本的单例模式的例子。Windows里面的任务管理器就是个典型的单例模式软件。这是因为Windows任务管理器只能打开一个,就算用户重复打开,也只能获得一个实例,这不同于word等软件可以打开多个实例。其中的原因就是如果有2个窗口同时都能结束某进程,这就会造成在窗口A中某进程结束了,在窗口B中该进程还保留的;同理反过来,某进程在窗口B中结束了,而在窗口A中还保留着。这样就会造成冲突,系统崩溃。Windows里面的任务管理器符合单例模式,保证一个类仅有一个实例的设计模式。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。