我将php OO用于我的项目。我的应用程序中有很多家庭在7左右。所以我必须使用switch并在我需要检查系列的每个文件中执行此操作。所以我觉得性能因此而受到影响。那么有什么方法可以消除这些开关案例并使用一些设计模式或类似的东西。目前的想法是为每个家庭提供单独的代码库,我完全不满意。所以寻找各种方案来解决这个问题。
答案 0 :(得分:3)
我只能引用马丁福勒的着作“重构:改进现有规范的设计”。
切换语句
最明显的症状之一 面向对象的代码就是它 相对缺乏开关(或案例) 声明。切换问题 陈述基本上是 复制。通常你会发现相同的 switch语句分散在一个 程序在不同的地方。如果你 你可以在交换机上添加一个新子句 必须找到所有这些开关, 陈述并改变它们。该 面向对象的概念 多态性为您提供了一种优雅的方式 处理这个问题。
大多数时候你会看到一个switch语句 你应该考虑多态性。该 问题是多态性应该在哪里 发生。通常是switch语句 打开类型代码。你想要的 承载该类型的方法或类 代码值。所以使用Extract Method来 然后提取switch语句 移动方法将其放到课堂上 需要多态性的地方。在 那一点你必须决定是否 用子类替换类型代码 或替换类型代码 国家/策略。当你设置好了 继承结构,你可以使用 用多态性替换条件。
考虑购买和阅读这本书,这是我读过的最珍贵的作品之一。
答案 1 :(得分:1)
该模式为Refactor Conditional With Polymorphism。
这个想法是将那些不同的家庭类型变成他们自己的对象。链接的文章取自Martin Fowler的书Refactoring: Improving the Design of Existing Code,该书在其他答案中已被引用。事实上,链接的网站有本书的全部内容。
找到更多信息