2011-03-25 44 views
2

我为我的项目使用php OO。我的应用程序中有很多家庭,因此我必须使用开关,并在每个需要检查家庭的文件中执行此操作。所以我觉得这样的表演是受到影响的。所以有什么办法可以消除这些开关情况,并使用一些设计模式或类似的东西。目前的想法是为每个家庭都有一个单独的代码库,我不完全满意。所以寻找各种选项来解决这个问题。OO代码的改进php

+0

有些代码可以帮助我们帮助您。 – Dutchie432 2011-03-25 11:31:03

+0

工厂模式? – 2011-03-25 11:34:20

+0

@Mark Ba​​ker或策略 - 它取决于.. – dantuch 2011-03-25 11:54:19

回答

3

我只能从他的书“重构:改进现有代码的设计”中引用Martin Fowler。

switch语句

之一的 面向对象的代码的最明显的症状是其 比较缺乏开关(或情况)的 语句。开关 声明的问题基本上是 重复的问题。通常你会在不同的地方找到与 程序相同的 开关语句。如果您在 中添加了一个新的子句给交换机,那么您的 必须找到所有这些交换机, 语句并对其进行更改。 面向对象的 多态性概念为您提供了一种优雅的方式 来处理这个问题。

大多数时候你看到一个switch语句 你应该考虑多态。 问题是多态性应该发生的地方 。开关语句 通常会打开一个类型代码。你想要 方法或类的主机类型 代码值。因此,使用提取方法 提取switch语句,然后使用 Move方法将其获取到需要多态性的类 。在 那一点你必须决定是否 用 替换类型代码或替换类型代码 状态/策略。当您设置了 继承结构时,可以使用 将条件替换为多态性。

考虑购买和阅读这本书,这是我读过的最珍贵的作品之一。

+0

+1。真棒书。 – Gordon 2011-03-25 12:04:22