unity项目开发——浅谈设计模式的六大原则(代码片段)

YF云飞 YF云飞     2023-01-02     692

关键词:

目录

前言

首先,六大原则是谁?

其次,为什么需要学习这六大原则?

正文

一、单一职责原则

示例:

因此我们需要进行拆分,根据具体的职能可将其具体拆分如下:

Unity 单一职责原则

二、开闭原则

Unity 开闭原则


前言

        面向对象,六大原则,设计模式,数据结构与算法,这些知识点都是脱离编程语言存在的。也就意味着它们 “比较抽象”,抽象的东西也就意味着从学习、理解到运用所需要花费的时间会比较长。

        今天我们就主要谈谈设计模式的“六大原则”。


首先,六大原则是谁?

        它们分别是单一职责、开闭原则原则、依赖倒置原则、里氏替换原则、接口隔离原则、迪米特原则。


其次,为什么需要学习这六大原则?

        六大原则是我们提高面向对象编程代码质量的必备原则,另外还是我们理解设计模式的必备前提。

        弄清楚了学习对象和学习目的,下面就可以进入正题了,这六大设计原则本质上是什么,又分别是用来做什么的,实际中的运用又有哪些?


正文

一、单一职责原则

        定义:就一个类而言,应该仅有一个引起它变化的原因。简单点理解就是,就是一个类只负责一项职责(功能)。

        从生活中的具体示例理解单一职责:

冰淇淋:单一职责是被吃

矿泉水:单一职责是被饮用

ofo:单一职责是共享单车

        生活中的事物的单一性是为了集中(精力 / 财力 / 物力),然后把这一点做到最好,只有这样才能更有竞争力。


        而编程中的单一性也是为了集中,一个类它的功能,作用,用途集中到一点。这样可以避免代码冗余,方便管理,方便团队沟通,能提高项目的开发效率。

示例:

public interface UserService 
    
    public void login(String username, String password);
    public void register(String email, String username, String password);
    public void logError(String msg);
    public void sendEmail(String email);
    

        这段代码很显然存在很大的问题,UserService 既要负责用户的注册和登录,还要负责日志的记录和邮件的发送,并且后者的行为明显区别于前者。

        假设我要修改发送邮件的逻辑就得修改这个类,这时候 qa 还得回归登录注册逻辑,这样明显不合理。

因此我们需要进行拆分,根据具体的职能可将其具体拆分如下:

UserService:只负责登录注册

public interface UserService 

    public void login(String username, String password);
    public void register(String email, String username, String password);


LogService :只负责日志

public interface LogService 

    public void logError(String msg);


EmailService: 只负责发送邮件

public interface EmailService 

    public void sendEmail(String email);


Unity 单一职责原则

        结合 Unity 项目开发过程中,有两个注意点:

①类功能的单一性;

②方法功能的单一性;

        一个类只负责一件具体的事情,一个方法只完成一个特定的功能。当你发现一方法完成了两件事情的时候,就需要适当的重构成两个方法,类也是一样的。单一职责在 unity 项目开发中的应用:

①功能类库的单一性:例如 UGUI 中的 JSON 就是单一用于解析 JSON 的。

②引擎组件类功能单一性:在 Unity 引擎内有一组灯光组件,是用于实现灯光照射渲染功能的。它根不同的功能分割成了 4 个组件:方向光,点光源,聚光灯,区域光。


二、开闭原则

        定义:全称开放封闭原则,软件实体(类,方法,模块)应该可以扩展,但是不可以修改

        在生活中的具体应用:

笔记本电脑

封闭:整个笔记本是封闭的,且笔记本背部标明了 “非专业人士,请勿试图拆卸或者维修” 以及 “撕毁保修无效” 的封条。

开放:指的是笔记本提供了若干个 USB 的插口,可供我们扩展。


        笔记本上的封闭,是为了保证设备本身的安全。而笔记本上的开放,是为用户预留可以扩展的接口。

        而编程中的封闭,也是为了保证原有的安全,当出现了新的需求,是以扩展的方式,而不是对原有的逻辑进行修改。面对需求,对程序的改动应该是以增加新代码的方式解决,而不是更改旧的代码 (这一点在游戏开发方向尤为重要)。


Unity 开闭原则

        Unity 引擎本身就是开闭原则很好的一个案例。

        Unity 官方把这款引擎打包发布出来以后,这个引擎本身程序员是不可以修改的,因为你没有源码 ---> 对修改关闭。但是 Unity 引擎提供了 “编辑器扩展功能”,提供了一组完整的 API,我们可以通过这组 API 对 Unity 引擎扩展出 N 个插件,以满足我们的特定需求。

要想富先练功,设计模式之六大原则

设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模... 查看详情

设计模式六大原则

...软件开发过程中,一些有经验的软件开发人员通常会采用设计模式来解决一些日常工作中的一些问题。设计模式是前人在软件开发的过程中总结出来的一些解决问题的方案,并且经受住了时间的考验和广大软件开发人员的不断验... 查看详情

设计模式概述和六大设计原则(代码片段)

 概述设计模式通常用于软件开发过程中,它们提供了软件开发过程中面临的一般问题的最佳解决方案。 设计模式的6大原则1单一职责原则(SingleResponsibilityPrinciple,简称SRP)不要存在多于一个导致类变更的原因,也就是... 查看详情

设计模式六大原则(代码片段)

目录:设计模式六大原则(1):单一职责原则设计模式六大原则(2):里氏替换原则设计模式六大原则(3):依赖倒置原则设计模式六大原则(4):接口隔离原则设计模式六大原则(5):迪米特法则设计模式六大原则(6):... 查看详情

「设计模式」六大原则之三:里氏替换原则小结(代码片段)

...父类注释中所罗列的任何特殊说明开发Tips4.小结:「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结 查看详情

「设计模式」六大原则之三:里氏替换原则小结(代码片段)

...父类注释中所罗列的任何特殊说明开发Tips4.小结:「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结 查看详情

「设计模式」六大原则之三:里氏替换原则小结(代码片段)

...父类注释中所罗列的任何特殊说明开发Tips4.小结:「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结 查看详情

「设计模式」六大原则之三:里氏替换原则小结(代码片段)

...父类注释中所罗列的任何特殊说明开发Tips4.小结:「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结「设计模式」六大原则之三:里氏替换原则... 查看详情

设计模式-六大设计原则之isp(接口隔离原则)(代码片段)

文章目录概述CaseBadImplBetterImpl概述接口隔离原则(InterfaceSegregationPrinciple,ISP),要求尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含相关的方法。接口隔离是为了高内聚、低耦合。在实际的开发... 查看详情

设计模式-六大设计原则之isp(接口隔离原则)(代码片段)

文章目录概述CaseBadImplBetterImpl概述接口隔离原则(InterfaceSegregationPrinciple,ISP),要求尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含相关的方法。接口隔离是为了高内聚、低耦合。在实际的开发... 查看详情

游戏开发浅谈游戏开发中常见的设计原则

  俗话说得好:“设计模式,常读常新~”。的确,每读一遍设计模式都会有些新的体会和收获。马三不才,才读了两遍设计模式(还有一遍是在学校学的),属于菜鸟级别的。这次准备把阅读设计模式的想法记录下来,... 查看详情

设计模式---六大原则(代码片段)

背景:听说设计模式是进入BAT的必经之路。 First、何谓设计模式:设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。设计模式的好处&学习目的:1、为了代码可重用行、让代码更... 查看详情

「设计模式」六大原则之二:开闭职责小结(代码片段)

...目中灵活应用开闭原则?5.示例:6.小结:「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结「设计模式」六大原则之三:里氏替换原则... 查看详情

atitit.软件开发的几大规则,法则,与原则principlev3

...发的几大规则,法则,与原则Principle v31.1.修改历史22.设计模式六大原则22.1.设计模式六大原则(1):单一职责原则22.2.设计模式六大原则(2):里氏替换原则22.3.设计模式六大原则(3):依赖倒置原则22.4.设计模式六大原则... 查看详情

「设计模式」六大原则之四:接口隔离原则小结(代码片段)

...3.接口隔离原则与单一职责原则的区别2.举例说明4.小结「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结「设计模式」六大原则之三:里氏替换原... 查看详情

「设计模式」六大原则之四:接口隔离原则小结(代码片段)

...3.接口隔离原则与单一职责原则的区别2.举例说明4.小结「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结「设计模式」六大原则之三:里氏替换原... 查看详情

「设计模式」六大原则之四:接口隔离原则小结(代码片段)

...3.接口隔离原则与单一职责原则的区别2.举例说明4.小结「设计模式」六大原则系列链接:「设计模式」六大原则之一:单一职责小结「设计模式」六大原则之二:开闭职责小结「设计模式」六大原则之三:里氏替换原... 查看详情

设计模式的六大原则

一、设计模式的概念及作用  设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代... 查看详情