【Java】每个Java程序员都应该学习10条编码原则( 二 )


3.开放式封闭设计原则
根据这一面向对象设计原则 , “类、方法或函数应开放以供扩展(新功能) , 并关闭以进行修改 。 ”
这是鲍勃叔叔在他的经典作品中提出的另一个漂亮的坚实的设计原则 。 清洁码本 , 这样可以防止某人更改已经尝试和测试过的代码 。
这个设计原则的主要好处是尝试过并测试过的代码不受影响 。 这意味着他们不会崩溃 。
下面是一个Java代码示例违反开放式程序设计原则:
在此代码中 , GraphicEditor与形状紧密耦合 , 如果需要新形状 , 则需要在drawShape(Shape s)方法 , 这既容易出错 , 也不可取 。
理想情况下 , 如果您只添加新功能 , 那么您的代码应该进行测试 , 这就是开放封闭设计原则的目标 。
顺便说一句 , 开闭原则是固体缩略词的“O” 。 如果您想更多地了解这个原则 , 面向对象设计与体系结构的坚实原则关于Udemy的课程是最好的参考资源之一 。
4.单一责任原则
单责任原则是另一个坚实的设计原则 , 在实体字缩写中代表“S” 。 根据SRP , 不应该有一个以上的原因来改变一个类 , 或者一个级别应该始终处理单个功能 。
这个原则的主要好处是它减少了软件的各个组件与代码之间的耦合 。
例如 , 如果您在Java中的一个类中放置了多个功能 , 那么它将引入耦合在两个功能之间 , 即使您更改了一个特性 , 也有可能破坏耦合功能 , 这需要进行另一轮测试 , 以避免对生产环境产生任何意外 。
你还可以看到从0到1:设计模式-24 关于Udemy的课程 , 学习基于这个原则的模式 。
5.依赖注入或反转原则
不要要求依赖 , 它将由框架提供给您 。 这在Spring框架中得到了很好的实现 , Spring框架是编写真正有价值的应用程序的最流行的Java框架之一 。
这种设计原则的优点在于 , 任何由DI框架注入的类都很容易用模拟对象进行测试 , 而且易于维护 , 因为对象创建代码集中在框架中 , 并且客户端代码中并不散落着这些代码 。
有多种实现方法依赖注入 , 比如使用字节码工具 , 一些AOP(面向方面编程)框架就像AspectJ那样 , 或者像Spring一样使用代理 。
您可以进一步看到面向对象设计与体系结构的坚实原则关于Udemy的课程 , 以了解更多关于这个有用的原则 。 它还代表固体缩略词的“D” 。
下面是一个违背依赖反转原则或Java中DIP的代码示例:
你可以看到AppManager 取决于EventLogWriter 与AppManager 。 如果您需要使用其他方式通知客户端 , 比如发送推送通知、SMS或电子邮件 , 则需要更改AppManager 班级 。
这个问题可以用依赖反转原理来解决 。 AppManager 索要EventLogWriter , 它将由框架注入或提供给AppManager 。
你还可以看到用扎实的原则编写更好的代码--速成课程对Udemy更多地了解依赖反演原理以及如何解决这些问题 。
6.有利于组合而不是继承
重用您已经编写的代码的一般方法有两种 , 即继承和组合;两者各有优缺点 , 但一般来说 , 如果可能的话 , 您应该总是倾向于组合而不是继承 。
你们中的一些人可能会这么说 , 但我发现构图是不是比继承.
通过在运行时设置属性 , 组合允许在运行时更改类的行为 , 通过使用接口组合类 , 我们使用多态 , 它提供了在任何时候以更好的实现代替的灵活性 。
甚至约书亚·布洛赫有效Java建议倾向于组合而不是继承 。 如果你还没有被说服 , 那么你也可以了解为什么组合比继承更适合重用代码和功能 。
而且 , 如果你总是忘记这条规则 , 这是一个很好的卡通放在你的桌子上:-)
如果您对学习更多关于面向对象编程概念(如组合、继承、关联、聚合等)感兴趣 , 也可以查看Java中的面向对象编程关于古瑟拉的课程 。
它可以自由探索和学习但是 , 如果你也想参加练习、作业、评估 , 并且需要在你的LinkedIn个人资料中显示证书 , 你将被收取费用 。


推荐阅读