设计模式之禅之设计原则概念总结

探索设计模式的魅力:设计之美-揭秘设计模式、原则与UML的魔法 设计模式、设计原则和UML是软件工程设计中的核心要素。设计模式为常见问题提供经验证的解决方案,复用性高且提升开发效率。设计原则指导我们创建灵活、可维护和可扩展的系统,确保代码质量和长期可维护性。UML(统一建模语言)则是一种强大的可视化工具,用于描述、构建和文档化软件系统的结构和行为。它帮助开发者更清晰地理解系统架构和组件间关系。综合应用设计模式、设计原则和UML,能够显著提高软件开发的效率和质量,减少维护成本,为复杂系统的设计和实施提供有力支持。 阅读详情

设计原则概念总结


阅读了设计模式之禅,将设计原则做个概念总结吧,如果想要更好的了解,还是要去看具体细节,这边只能粗略的总结一下,作为一个学习的笔记吧。


单一职责原则

英文名:Single Responsibility Principle 简称SRP

英文定义:

There should never be more than one reason for a class to change

中文翻译:应该有且仅有一个原因引起类的变更.

优点:

  • 1.类的复杂性降低,实现什么职责都有清晰明确的定义;
  • 2.可读性提高(复杂性降低,可读性自然就提高了);
  • 3.可维护性提高(可读性提高,可维护性自然就更容易了);
  • 4.变更引起的风险降低

总结:对于单一职责原则,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化

ps:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类或方法设计的是否优良,但是“职责”和“变化原因”是不可以估量的,因项目而已,因环境而异


里氏替换原则

英文名:Liskov Substitution principle

基础回顾

继承的优点

  • 1.代码共享,减少创建类的工作量,每个之类都拥有父类的方法和属性;
  • 2.提高代码的重用性;
  • 3.子类可以形似父类,又异于父类,有自己的方法和属性;
  • 4.提高代码的可扩展性,实现父类的方法就可以“为所欲为”;
  • 5.提高产品或项目的开放性

继承的缺点

  • 1.继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法
  • 2.降低代码的灵活度。子类必须拥有父类的属性和方法,让子类自由的世界里多了约束;
  • 3.增强了耦合性,当父类的常量、变量和方法被修改时,需要考虑子类的修改;

里氏替换两种定义:

  • 1.如果对每一个类型为S的对象o1, 都有类型为T的对象o2, 使得以T定义的所有程序P在所有的对象o1都代换成o2时, 程序P的行为没有发生变化, 那么类型S是类型T的子类型。
  • 2 .所有引用基类的地方都可以透明地使用其子类的对象。

含义

1:子类必须完全实现父类的方法(这里指的父类一般是接口或者抽象类);

注意:

  • 1在类中调用其它类时务必要使用父类或者接口(这样众多子类可以传入父类为参数的方法中
  • 2.如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖,聚合,组合等关系代替继承。

2.子类可以有自己的个性;

注意:向上转型是安全的,向下转型(downcast)是不安全的,从里氏替换原则来看,有子类出现的地方父类未必就可以出现

3.覆盖或实现父类的方法时输入参数可以被放大;

当子类的方法输入参数被放大了,这时候,子类和父类所对应的关系就是重载(方法名相同,输入参数不同)。如果子类的输入参数被缩小了。也就是子类的输入参数为父类的输入参数的子类的话,子类在没有重写父类的方法的时候,子类的方法会被执行,这样会引起业务逻辑混乱。换句话说,如果要执行如果要让子类的方法执行(与父类方法名相同),就必须重写父类的方法。

4.覆写或者实现父类方法时输出结果可以被缩小

覆写的情况下,父类和子类的同名方法的输入参数相同,子类方法的返回值类型应该小于等于父类的返回值类型,也就是父类的返回值类型应该等于子类的返回值类型,或者父类的返回值类型是子类的返回值类型的父类。

总结
采用里氏替换原则的目的就是增强程序的健壮性,版本升级的时候也可以保持很好的兼容性,即使增加子类,原有的子类可以继续运行,在实际项目中,每个子类对应的不同业务含义,使用父类作为参数,传递不同的子类完成不同的业务逻辑!要尽量避免子类的”个性”


依赖倒置原则

英文名:Dependence Inversion Principle

何为依赖倒置:

先谈何为依赖正置,依赖正置是类间的依赖是实实在在的实现类之间的依赖,也就是面向实现编程,而编写程序需要是对现实事物进行抽象,抽象的接口是有了接口和抽象类,然后根据系统设计的需要产生抽象间的依赖,代替了传统思维中事物间的依赖,这就是倒置了!

含义:

  • 1.高层模块不应该依赖低层模块,两者都应该依赖其抽象;
  • 2.抽象不应该依赖细节;
  • 3.细节应该依赖抽象;

对应java中的表现就是

  • 1.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;
  • 2.接口或抽象类不依赖于实现类;
  • 3.实现类依赖接口或者抽象类;

更精髓的定义就在于”面向接口编程”

例如:驾驶员开车,车就是一个接口,车的功能是跑,接口里有run方法,所有的车就必须继承这个接口,驾驶员开车的方法传入参数也必然是接口的实例;

优点

依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性;

注意:在java中,只要定义变量就必然有类型,一个变量可以有两种类型:表面类型和实际类型,表面类型是在定义的时候赋予的类型,实际类型是对象的类型,如
IDriver zhangSan = new Driver( ) ;表面类型是IDriver,实际类型是Driver,这里我的理解是:编译时是IDriver类型,zhangsan能调用的方法也只能是IDriver中存在的方法,但是运行时类型是Driver,调用的实际是实现类的方法。这里用到了向上转型,是安全的。

依赖的三种写法
依赖是可以传递,A对象依赖于B对象,B对象依赖于C对象,C对象依赖于D,只要记住关键的一点:只要做到抽象依赖,即便是有多层的依赖传递也无所畏惧!

  • 1.构造方法传递依赖对象(构造函数注入)

    public interface IDriver {
        //是司机就应该会驾驶汽车
        public void drive() ;
    }
    public class Driver implements IDriver{
        private ICar car;
        //构造函数注入
        public Driver(ICar _car) {
            this.car = _car;
        }
        //司机的主要职责就是驾驶汽车
        public void drive() {
            this.car.run() ;
        }
    }
    
  • 2.Setter方法传递依赖对象(在抽象中设置Setter方法声明依赖关系,这是Setter依赖注入)

    public interface IDriver {
        //车辆型号
        public void setCar(ICar car) ;
        //是司机就应该会驾驶汽车
        public void drive() ;
    }
    public class Driver implements IDriver{
        private ICar car;
        public void setCar(ICar car) {
        this. car = car;
        }
        //司机的主要职责就是驾驶汽车
        public void drive() {
        this.car.run() ;
        }
    }
    
  • 3.接口声明依赖对象(在接口方法中申明依赖对象;)

    public interface IDriver {
        //是司机就应该会驾驶汽车
        public void drive( ICar car) ;
    }
    

总结

依赖倒置原则的本质就是通过抽象(接口或者抽象类)使各个类或者模块的实现彼此独立,不互相影响,实现模块间的松耦合,我们在项目中使用的规则如下:

  • 1.每个类尽量都有接口或者抽象类,或者抽象类和接口两者都具备。(有了抽象才可以依赖倒置);
  • 2.变量的表面类型尽量使接口或者是抽象类;
  • 3.任何类都不应该从具体类派生;
  • 4.尽量不要复写基类的方法;
  • 5.结合里氏替换原则使用;

结合里氏替换原则:父类出现的地方子类就可以出现;

再结合本章得出通俗的规则:接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造方法的是实现,实现类负责准确实现业务逻辑,同时在适当的时候对父类进行细化。

ps:依赖倒置原则的优点在小型项目 中很难体现出来, 例如小于10个人月 的项目 , 使用简单的SSH架构, 基本上不费太大力气就可以完成, 是否采用依赖倒置原则影响不大。 但是, 在一个大中型项目 中, 采用依赖倒置原则有非常多的优点, 特别是规避一些非技术因素引起的问题。 项目 越大, 需求变化的概率也越大, 通过采用依赖倒置原则设计的接口或抽象类对实现类进行约束, 可以减少需求变化引起的工作量剧增的情况。 人员的变动在大中型项目 中也是时常存在的, 如果设计优良、 代码结构清晰, 人员变化对项目 的影响基本为零。 大中型项目 的维护周期一般都很长, 采用依赖倒置原则可以让维护人员轻松地扩展和维护。


接口隔离原则

英文名:Interface Segregation Principle

含义:

Clients should not be forced to depend upon interfaces that they don’t use.(客户端不应该依赖他不需要的接口)

The dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上)

建立单一接口,不要建立臃肿庞大的接口;把一个臃肿的接口变更为多个独立的接口所依赖的原则就是接口隔离原则,接口是我们设计时对外提供的契约,通过分散定义多个接口,可以预防未来变更的扩散,提供系统的灵活性和可以维护性

接口隔离原则与单一职责原则的区别:

单一职责原则要求的是类和接口职责单一,注重的是职责,是业务逻辑上的划分;

接口隔离原则则是要求接口的方法尽可能的少;(职责单一并不为意味着接口的方法少)

接口隔离原则是对接口进行规范约束,其包括以下4层含义:

  • 1.接口要尽量小;接口隔离原则拆分接口时,首先必须满足单一职责原则;
  • 2.接口要高内聚;要求接口中尽量少公布public方法,接口时对外的承诺,承诺越少对系统的开发越有利,变更的风险越少,同时也有利于降低成本;
  • 3.制定服务;为单独的一个个体提供优良的服务;
  • 4.接口设计是有限度的;

实践中衡量的规则

  • 1.一个接口只服务于一个子模块或业务逻辑;
  • 2.通过业务逻辑压缩接口中的public方法;
  • 3.已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理;
  • 4.了解环境,拒绝盲从;

迪米特法则

英文:Law of Demeter 又称为最少知识原则(Least Knowledge Principle)

定义:

一个对象应该对其他对象有最少的了解;

  • 1.只和朋友交流(避开与陌生类的交流,降低系统的耦合,提高系统的健壮性)
  • 2.朋友之间是有距离的;(耦合度要低,尽可能的减少public方法和public属性)
  • 3.是自己的就是自己的;(如果一个方法放在本类中,即不增加类间联系,也对本类不产生负面影响,那就放置在本类中);
  • 4.谨慎使用Serializable;

总结

迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高,其要求的结果就是产生了大量的中转或跳转类,导致系统的复杂性提升,同事也为维护带来了难度。在使用中迪米特法则时候需要反复权衡,既做到让结构清楚,又做到高内聚低耦合;

开闭原则

英文名:Open Closed Principle

含义:Software entities like classes,and functions should be open for extension but closed for modifications

一个软件实体如类。模块和函数应该对扩展开放,对修改关闭。

注意
开闭原则是对扩展开放,对修改关闭,并不意味着不做修改,底层模块的变化,必然要更高层模块进行耦合,否则就是一个孤立无援的代码片段。

开闭原则的重要性

  • 1.开闭原则对测试的影响。(原来的测试依然没有影响,因为我们是用过扩展来实现业务逻辑的修改)
  • 2.开闭原则可以提高复用性;
  • 3.开闭原则可以提高维护性;
  • 4.面向对象开发的要求(再设计时候要考虑到可能变化的因素,然后留下接口,等待”可能”变成”现实”);

如何使用开闭原则

  • 1.抽象约束
  • 2.元数据( metadata) 控制模块行为。(元数据通俗的讲就是配置参数,参数可以通过文件获取,也可以从数据库中获取,)
  • 3.制定项目章程
  • 4.封装变化(1.讲相同的变化封装到一个接口和抽象类中;2.将不同的变化封装到不同的接口或抽象类中,不应该有两个不同变化的出现在同一个接口和抽象类中)

ps:开闭原则是一个终极目标,任何人包括大师级人物都无法百分百做到,但朝这个方向努力,可以非常显著的改善一个系统的架构,真正做到”拥抱变化”

Java设计模式详细介绍(含面向对象设计原则) 设计模式是在软件设计中反复出现的问题的可重用解决方案。它们是由经验丰富的软件开发人员和专家总结出来的,通常可以用来解决特定类型的问题。设计模式提供了一种通用的解决框架,可以在不同的情况下重复应用。设计模式不是具体的算法或者代码,它们更多地表达一种面向对象设计的思想和方法。设计模式并非适用于所有情况,需要开发人员根据具体情况和需求合理运用设计模式,避免滥用设计模式而引入不必要的复杂性。 阅读详情

相关推荐

编程艺术之源:深入了解设计模式和设计原则

设计模式是软件开发中常用的解决问题的模板,它是通过对软件开发中经常遇到的问题进行总结和抽象产生的。设计模式的基础是面向对象思想和设计原则,通过对这些基础知识的理解,可以更好地学习和应用设计模式。为了有效地学习设计模式,首先需要明确学习的目的,然后按照一定的学习步骤系统学习,才能够真正掌握设计模式的精髓。通过本文的介绍,读者将更加深入地认识设计模式以及学习设计模式的方法。

Lion_Long的博客 763

《设计模式之禅》观后感-六大设计原则(一)

通过大牛推荐,看了这本《设计模式之禅》书籍,个人将书里的一些重点罗列出来了,如有错误地方,麻烦各位大牛告知。 《设计模式之禅》作者:秦小波 本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,...

搬砖工的博客 869

【Java】六大设计原则和23种设计模式

代理模式给某一个对象提供一个代理对象并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过户流程,我只是负责选择自己喜欢的车,然后付钱就可以了。

weixin_71491685的博客 2094

《设计模式之禅》总结

转自https://blog.youkuaiyun.com/clivially/article/details/78437846 阅读设计模式有很多时日了,差不多两个月时间,以下为个人理解。其中有部分内容为书中原文,或者例子,有些是自己的所感所想,理解浅显,谨以此记录自己的学习经历 设计模式观后感 1.六项基本原则: 1.1单一职能原则: 每一个类实现的功能和作用要单一,比如实体类实现的是单纯的属性...

一个浪子 3245

设计模式之禅:第二版深度解析与实践

创建型模式的定义与分类、核心思想是本节将探讨的内容。我们将理解创建型模式的定义,并对常见的创建型模式进行分类,之后深入了解这些模式的核心思想和设计目标。创建型模式关注的是对象创建过程,目的是使对象的创建独立于其使用,从而提高系统的灵活性和可复用性。创建型模式主要分为以下几类:单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。

weixin_35307279的博客 1075

【QEMU系统分析之TPM篇(一)】

本文以 QEMU 8.2.2 为例,分析其 TPM-emulator 模块的实现,并为 QEMU 添加 Windows 平台的TPM 模拟器的支持。

David唐辉的博客 1191

uml类图实例作业_[学习·设计模式]看懂UML类图

最近想要开始学习设计模式,因此打算做些笔记,做个心得分享。为什么我突然脑子抽风想学设计模式?为了找工作,努力补习看了《Java程序员面试笔试宝典》这本书。但是对于其中关于设计模式的,完全属于死记硬背。强行背诵下:单例模式:确保该类只有一个实例,而且自行实例化,并向整个系统提供这个实例。public class Test{ private Test(){} private static Te...

weixin_39517546的博客 441

手把手教你用Kokoro-82M-v1.1-zh搭建本地TTS服务(含WebSocket接口)

本文详细介绍了如何使用Kokoro-82M-v1.1-zh模型搭建本地TTS服务,包括环境配置、模型部署、WebSocket接口实现及性能优化。通过实战指南,开发者可以快速掌握本地部署TTS系统的关键技术,提升语音交互应用的开发效率。

weixin_30776273的博客 183

设计模式之禅

书名:设计模式之禅作者:秦小波出版社:机械工业出版ISBN:9787111295440出版日期:2010 年3月开本:16页码:556定价:69元豆瓣网讨论地址:http://www.douban.com/subject/4260618/China-pub预订地址:http://www.china-pub.com/196412

华章IT官方博客 1770

IC版图设计之OASIS文件格式详解

OASIS(Open Artwork System Interchange Standard)是继GDSII之后新一代的集成电路版图数据交换标准,由SEMI在2004年正式发布(SEMI标准号:SEMI P39)。高压缩率:相比GDSII可减少3-10倍文件体积扩展性强:支持纳米级工艺的复杂图形描述跨平台兼容:独立于EDA工具和操作系统安全增强:内置校验和与加密支持。

ZZcppc的博客 2445

HFSS 3D LAOUT PCB 裁剪,差分线,过孔仿真和优化

我本身不是做天线设计的,所以HFSS这个软件给我主要还是做PCB级别的高速信号完整性仿真,一般2.5D的仿真软件无法对过孔和跨平面进行仿真。所以要借助三维电磁软件进行。今天就针对PCB进行裁剪。为什么要裁剪?以为如果把整个PCB一起仿真的话,应该要好几个月吧。所以为了加快仿真速度,必须进行裁剪仿真。①candence的PCB可以直接导入。那么先导入brd文件,file-import-candence结果如下②点击cutout,选中要仿真的net和参考平面。这里最好选creat new不然会把原文件覆盖掉。注

gjatwfn的专栏 1万+

DesignPattern - 设计原则与设计模式初探

欢迎关注微信公众号:FSA全栈行动 ???? 一、设计原则 设计模式是站在设计原则的基础之上的,所以在学习设计模式之前,有必要了解一下设计原则 软件设计开发原则 为了让代码有更好的重用性,可读性,可靠性,可维护性 有六大原则,英文首字母拼在一起就是 SOLID(稳定的),所以也称之为 SOLID 原则 1、单一职责原则(Single Responsibility Principle) 一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因 是实现 高内聚、低耦合 的指

GitLqr的博客 350

MFC C++ 中开发 PLC 通信客户端

OPC UA | 工业标准化通信 | `open62541`(开源OPC UA库)或 `UA-.NET` 封装 | 跨平台、安全可靠,支持复杂数据类型 |- 连接句柄(`modbus_t*`/`UA_Client*`/`TS7Client*`)不可跨线程共享,需为每个线程创建独立连接。Modbus 是工业常用协议,分 **RTU**(串口)和 **TCP**(以太网)两种模式,以下以 Modbus TCP 为例。s=Tag`),复杂类型需解析扩展对象。

寒寒豆豆软件公司的博客 139

游戏设计中常见的设计模式——设计原则

设计模式其实时基于在开发中经常出现的问题所提出的解决方案的核心,之后可以让你基于某中设计模式变出各种具体的招式,来应对各种问题。软件开发就是使用某一种程序设计语言,来完成软件系统中需要具备的功能,这些功能就可以被设计者成为“问题”。常见的“问题”分为两种:一种是特定的问题,就是该问题只会出现在某一个软件系统中;另一种是泛问题,就是诸如此类的问题会以相同的形式出现在不同软件系统中。而设计模式就是针对这些泛问题所设计的解决方案。

2401_86085828的博客 4321

【Burp入门第三十三篇】BurpSuite+Proxifier安装配置,实现微信小程序抓包

本文介绍Burp+Proxifier安装配置,实现微信小程序抓包

等风来 5873

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java设计模式之七大设计原则

Java设计模式之七大设计原则 本文对Java设计模式中的七大设计原则进行汇总介绍,提炼最核心的概念。 设计模式总结笔记 一、设计模式七大原则 设计模式的目的: 代码可重用性:相同功能的代码,不用多次编写。 可读性:编程规范性,便于其他程序员的阅读和理解。 可扩展性:当需要增加新的功能的时候,非常方便,称为可扩展性。 可靠性:当我们新增功能后,对原来的功能没有影响。 使程序呈现高内聚、低耦合特性。 1.1、单一职责原则 不遵守单一职责原则: 对类来说的,就是一个类应该只负责一项职责。 比如:Us

qq_49529322的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

学习6大设计原则、23种设计模式

        了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。所以在学习设计模式之前,很有必要对这些设计原则先做一下了解。1、单一职责原则There should never be more than one reason for a class to change.理解:不同的类...

和光同尘的博客 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

⭐️C#零基础到入门 ⭐️| 带你认识编程中的—23种设计模式 & 六大设计原则

设计模式介绍。 设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式使代码开发真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。只有夯实地基搭好结构,才能盖好坚壮的大楼。也是我们迈向高级开发人员必经的一步。

努力前行,总会成为自己心中的那道光 5064

常用设计原则和设计模式

文章目录常用设计原则和设计模式常用的设计原则(记住)软件开发的流程常用的设计原则常用的设计模式基本概念基本分类设计模式详解(重点)单例设计模式普通工厂模式基本概念类图结构代码实现举例普通工厂模式的优势主要缺点多个工厂方法模式基本概念类图结构代码实现举例主要缺点静态工厂方法模式基本概念类图结构实际意义(工厂方法模式的作用)主要缺点抽象工厂模式基本概念类图结构代码实现举例主要优势装饰器模式基本概念类图结构代码实现举例实际意义代理模式基本概念类图结构代码实现举例实际意义代理模式和装饰器模式的比较模板方法模式基本概

hyment的博客 260

设计模式之设计原则及分类

面向对象设计原则和前人总结出来的设计模式是软件工程中非常重要的概念思想,主要为我们日常的开发中提供了一套完整的开发思想,帮助我们在日常开发中构建更加灵活、可维护和可扩展的系统。设计原则是“道”:提供指导思想,塑造代码哲学。设计模式是“术”:提供具体工具,解决特定问题。二者结合能写出高内聚、低耦合、易扩展的代码。

weixin_43582896的博客 1260

Head First设计模式与设计模式之禅:设计模式学习指南?

设计模式是软件开发领域的核心知识,能够帮助我们解决常见的代码设计问题。《Head First设计模式》和《设计模式之禅》是两本颇具影响力的书籍,它们以不同的方式阐释这一主题。

aasjdin的博客 305

C++ 设计模式 面向对象设计原则 相关概念介绍(结合UnrealEngine4)

C++ 设计模式 面向对象设计原则(1)相关概念介绍 (结合UnrealEngine4)2020.5.4修订 目录 面向对象设计原则(1) 依赖倒置原则(DIP) 开放封闭原则(OCP) 单一职责原则(SRP) 该原则提出对象不应该承担太多职责,如果一个对象承担了太多的职责,至少存在以下两个缺点: 单一职责原则的优点 Liskov 替换原则(LSP) 接口隔离原则(ISP) ...

MorningStar的博客 755

C++设计模式的设计原则(面向对象八大设计原则)

C++设计模式八大原则的讲解,面向对象八大设计原则的讲解,以简单易懂、有趣论说来讲解八大设计原则

不负AC不负卿的博客 4681
上一篇: Android应用 捕获应用崩溃的数据CrashHandler
下一篇: 你应该知道的那些Android小经验
Leafact
博客等级 码龄14年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值