1面向对象的设计原则
1.1 单一职责SRP
一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
1.2 开闭原则OCP
(最重要的面向对象设计原则)
软件实体应当对扩展开放,对修改关闭。
抽象化是开闭原则的关键:相对稳定的抽象层 + 灵活的具体层。
1.3 里氏代换原则LSP
(向上转型)
在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。
具体见E01.cs
1.4 依赖倒转原则DIP
(C#中编写“换枪”时用到过)
要针对接口(抽象)编程,不要针对实现编程。
1.5 接口隔离原则ISP
当一个接口太大时,需要将它分割成一些更细小的接口。
1.6 合成复用原则CRP
(Unity中可通过向空物体中加不同组件实现将空物体变成不同物体)
优先使用对象组合,而不是继承来达到复用的目的。
1.7 迪米特法则LKP
一个对象只能与直接朋友发生交互,不要和“陌生人”发生直接交互,这样做可以降低系统的耦合度,一个对象的改变不会给太多其他对象带来影响。
2 类的UML图示
2.1图例
减号“-”:private
加号“+”:public
井号“#”:protected
2.2 类之间的关系
单向关联,双向关联,聚合,组合,依赖,继承,接口
3 类中构造器的区别与说明
3.1 有参与无参构造器
类中若不声明任何构造器,默认会存在一个无参构造器;
若声明了有参构造器,默认存在的无参构造器将被覆盖消失
3.2 静态构造器
格式:static 类名(){}
(前面不能加访问修饰符,因为实例化的所有对象是不会通过静态构造器生成的)
无论new几个新对象,仅在第一次new时执行一次
3.3 私有构造器
格式:private 类名(){}
不能在类外调用,只能在类内实例化,这样可以确定实例化对象的数量
(在类内实例化的方式:将“new 类名”实例化过程写入一个public static修饰的方法内。实例化时由其他类通过“类名.方法名”调用)