问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-20 23:44

我来回答

2个回答

热心网友 时间:2022-04-06 01:14

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 Bai 百科

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

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

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

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

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

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

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

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

热心网友 时间:2022-04-06 02:32

问什么都是虚,一般都要实操
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机扬声器清理 手机扬声器如何清理 电脑电源12v电压低故障维修 华为手机怎么开启健康运动授权功能 win10怎么修复IE win10自带浏览器打不开怎么办 win10自带浏览器打不开解决办法介绍_百度... 一般电塔上有14根线的是多少伏? 请问这个电塔上是多少伏特的高压线,是不是1000kv的。 只有一台变压器高压如何设计 怎么改手机号? 糖尿病餐后2小时血糖的正常值范围是多少 艺术设计的六大原则是什么?请分别举例阐述 如何学习JDK里的设计模式 如何学习设计模式? 设计模式是6大原则还是7大原则 设计模式的设计原则 设计模式有几个原则?分别是什么 2019泰山币什么时候预约 现在泰山对外开放了吗? 夜游泰山门票多少钱 泰山要门票的吗? 本地人登泰山要预约吗? 泰山的门票需要预定吗? 五一后游泰山还得预约吗? 购买的泰山门票需要提前预约取票吗 泰山门票网上能预定吗 泰山景区的门票己订好,还需预约吗? 泰山售票处早上几时开始售票? 泰山门票网上预订官网 从天外村爬泰山从哪个入口预约? 去泰山门票需要提前预定么 JAVA23种设计模式 JAVA设计模式的原则 什么叫设计模式? 什么是设计模式,该如何使用设计模式 打造模式还是构建模式? 扇贝课程可以在电脑上看吗 面向对象的设计模式有什么原则? 设计模式都有哪些? 如何发明一个遵循六大设计原则的新的设计模式? 如何正确地使用设计模式 设计模式有哪些 梦见亲人的坟越长越大好吗 梦见家里的坟墓长大了 梦见爷爷的坟尾长大了,坟头有踏陷。怎么回事? 梦见爷爷奶奶的坟墓变大了 梦到爷爷奶奶的坟墓前躺着自己的孩子 梦见自己爷爷的坟墓,急急急!!求高人帮忙解答!! 梦见爷爷的坟墓土长高 梦见我爷爷的坟前和周围长满了竹子,我和我妹妹把... 梦见爷爷坟前好大一个塘里面全是水