当前位置: 首页 > 科技观察

设计模式总不能学吧?换个姿势再学!

时间:2023-03-19 11:48:07 科技观察

本文转载自微信公众号《打个蛋》,作者陈玉明。转载本文请联系码蛋公众号。设计模式的起源于1977年由美国著名建筑师克里斯托弗·亚历山大(ChristopherAlexander)提出。他拥有剑桥大学数学硕士学位和建筑学学士学位,以及哈佛大学建筑学博士学位。他有“模特之父”的称号。1990年,软件工程界开始讨论设计模式的话题。1994年,ErichGamma、RichardHelm、RalphJohnson、JohnVlissides等4位作者共同出版了《设计模式:可复用面向对象软件的基础》一书(DesignPatterns:ElementsofReusableObject-OrientedSoftware)。本教程收录了23种设计模式,是设计模式领域的里程碑事件,引领了软件设计模式的突破。这四位作者在软件开发界也被匿名称为他们的四人帮(GoF)。什么是设计模式?简单的说,就是编程界的如来掌。可以提高程序员的思维能力、编程能力和设计能力。它是解决具体问题的一系列套路,具有一定的普适性。它是代码设计经验的总结,被反复使用,为大多数人所熟知。它提高了代码的可重用性、代码的可读性以及代码的可靠性和可扩展性。可以使程序设计更加规范,提高软件开发效率,缩短软件开发周期。就是它就是它,编程界的武功秘籍,绝世高手练过!设计模式的分类模式分为3种不同类型的模式。创建型模式提供了一种对象创建机制,可提高现有代码的灵活性和重用性。结构模式解释了如何将对象和类组装成更大的结构,同时保持结构的灵活性和效率。行为模式负责对象之间的有效沟通和职责分配。别问为什么是粉色设计模式的七大原则单一职责原则(SingleResponsibilityPrinciple,SRP)意思:一个类只负责一个功能域中相应的职责。栗子:就像一个公司,团队里的每个人都有明确的分工。有产品经理、项目经理、技术经理、QA经理等等。好处:降低类复杂度,提高代码可读性,提高可维护性。开闭原则(OCP)含义:软件模块应该对扩展开放,对修改关闭。当程序需要增加新的功能时,不能修改原来的代码,只能增加新的代码。李子:就像插座一样,可以给很多不同的电器充电,但是插座本身是不需要换的,只要事先定义好插头的规格就可以了。好处:为了使程序具有可扩展性,便于维护和升级。LiskovSubstitutionPrinciple(LSP)含义:子类可以扩展父类的功能,但不能改变父类原有的功能。栗子:今天刚请我吃小龙虾,就说说虾吧,虾是一种食物。虾的派生类有很多,如南极红虾、淡水虾、河虾、草虾、对虾、对虾、龙虾等。如果派生类替换基类原有的方法,比如把食物改成体育用品(那么软件的基本功能都会受到影响),不符合里氏代换原则。好处:规范实现抽象的具体步骤。依赖倒置原则(DIP)含义:高层模块不应该依赖低层模块,两者都应该依赖于它的抽象。针对接口编程,而不是实现。栗子:以电脑为例,主板、CPU、内存、硬件都是为接口设计的。如果零件的某个部分坏了,只需更换相应的零件即可。如果是设计实现,如果电脑显示器坏了,主机也需要更换。好处:减少模块之间的耦合。接口隔离原则(InterfaceSegregationPrinciple,ISP)含义:使用多个隔离的接口优于使用单个接口,将一个臃肿庞大的接口拆分成更小的接口。栗子:假设你想设计一个操作机器人的界面。你不能只有动作和停止接口。动作可分为前进、后退、转身、跳跃等,界面拆分可以进行更多组合。好处:提高系统的灵活性和可维护性。CompositeReusePrinciple(CRP)含义:可以使用合成/聚合的地方,永远不需要继承。先尝试使用组合或聚合等关联关系来实现,再考虑使用继承关系来实现。栗子:汽车按“动力源”可分为汽油车、电动车等;按“颜色”可分为白车、黑车、红车等。如果同时考虑这两种分类,则有多种组合。好处:提高灵活性,减少类之间的耦合。得墨忒耳法则(LawofDemeter,LoD)含义:又称最少知识原则,一个实体应尽可能少地与其他实体进行交互,使系统的功能模块相对独立。栗子:对于智能音箱,你只需要告诉智能音箱指令,智能音箱就会识别指令调用各种连接的电器,比如:我想看湖南卫视,调低空调温度、启动扫地机器人等。智能音箱帮我们解决了很多遥控器找不到的烦恼。好处:减少类之间的耦合,减少对其他类的依赖。新手误区不合理使用,这个问题很多刚学的新手都会犯。就好比手上拿着锤子,看什么都像钉子。在对设计模式的使用场景有一定的了解之后再使用,不要滥用。比如:要输出一句“helloworld”,就需要强行加上各种模式。问:“为什么”,答:“总觉得没有规律!”。有以上症状的人,基本可以判断是中了花纹的毒。总结一下这次的主要学习:设计模式的本源来自于架构。什么是设计模式,老大的套路。设计模式分为三类。设计模式的原则,有七个原则。