- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果你有很多类,其中只有 1 或 2 个方法,这是否是糟糕设计的标志?
我正在尝试学习 OOP 设计并创建了一个小型应用程序(很小)。
它最终得到了很多实现接口(interface)的类,这些接口(interface)只包含 1 或 2 个方法。
分离的感觉很好,但是类的方法太少似乎很糟糕。
我知道每种情况都会有所不同,但从一般角度来看这很糟糕吗?
应用程序的一小部分决定了喂狗的时间表(我知道跛脚):
所以我试图在这里实现策略模式:
class DogFeedController
{
protected $strategy = null;
public function __construct(iDogFeedStrategy $strategy) {
$this->strategy = $strategy;
}
public function getFeedingSchedule() {
$morningFeeds = $this->strategy->generateMorningFeeds();
$eveningFeeds = $this->strategy->generateEveningFeeds();
}
}
class GeneralFeedStrategy implements iDogFeedStrategy
{
public function generateMorningFeeds() {
//do stuff here
}
public function generateEveningFeeds() {
//do stuff here
}
}
最佳答案
如果太多,您必须自己衡量。 OOP 是一种以有意义和真实的方式分离逻辑的好方法,但它也可能达到对可维护性产生负面影响的程度,并且在那时它被错误地应用。
想想应用程序的去向。它总是会是一个小应用程序吗?如果是这样,您不需要创建很多非常通用的接口(interface)。尝试将它们结合起来,如果只有一个类实现了接口(interface),你也许可以完全删除接口(interface)。
如果您预计您的应用程序会大幅增长,那么这些接口(interface)实际上可能会帮助您在 future 维护和添加功能。例如,如果您创建了一个应用程序来管理一个只有汽车 parking 位的 parking 场,如果您预计会增长到不同类型的车辆(例如摩托车只占用一半 parking 位),您可能希望创建一个通用汽车界面。也就是说,您不应该试图在项目开始时涵盖所有可能的需求变化,并使代码过于抽象。衡量需求变化的风险可以帮助您预测需要抽象哪些代码。
如果您是团队中的软件工程师,请将您的设计绘制成图表并将其展示给您的同事,以征求他们的意见。
最后,小心code smells .
关于oop - 糟糕的 OOP 有很多只有 1 或 2 个方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096899/
我想在这里说的是我在从之前离开的相同状态重新启动我的应用程序时遇到的问题。我在这方面做了很多研发,并且已经解决了 stackoverflow 中发布的问题。所以请不要说它是重复的。 我试过设置这些选项
当我在我的类中实现 __cmp__ 函数时,python 是否会在内部重载“==”,我们在 C++ 中是如何做到的? 只是好奇。我是 python 的新手。 :) 最佳答案 ==的含义当您定义 __c
我在 Raspberry Pi2 上安装了 Gitlab,几个月来它运行良好。但自从关闭了RPi的电源后,它就不再起作用了。网页返回502错误。 502 Whoops, GitLab is takin
有人知道用户登陆带有Webfonts的页面时为什么Google Chrome浏览器崩溃吗 它并不会一直发生,而是经常发生 我刚得到一个蓝屏页面,却不知道为什么:该页面不是来自重定向时就很好了。 这是我
当我登录时,Skype始终会给出此错误。 糟糕,Skype存在问题。尝试注销然后重新登录。 STARTUP_LOAD_ERROR MACBOOK 最佳答案 Macbook 用户 退出Skype 回家
我正在尝试从 flutter 开始,首先我在 cmd 上运行 flutter doctor 它有效。在我安装了 ANDROID SDK 之后,同样的命令 flutter doctor 给了我异常:
从 android studio 终端运行 flutter attach 不工作。显示错误flutter 意外退出。 终端输出: flutter attach Checking for adverti
当使用 TinyMCE 4 测试所有浏览器时,Chrome 非常慢。 (我尝试从 TinyMCE 中删除所有插件,但没有任何区别。) Chrome 需要大约 20-25 秒在 TinyMCE 中呈现一
我试图让下面的脚本工作,以便从远程服务器(服务器 1)读取特定目录中的 CSV 文件列表,并将数据移植到另一台服务器的 PostgreSQL 数据库中。 我已经创建了一个 rsa SSH key 并将
在嵌入式 linux 环境中(在 PowerPC 上定制的 2.4.25)几个小时后我得到以下内核 panic : Oops: kernel access of bad area, sig: 11 N
在将现有 Node.js (Hapi.js) + RethinkDB 从 OVH VPS(最小 vps)迁移到 AWS Lambda( Node )+ DynamoDB 的过程中,我最近遇到了一个非常
我是一名优秀的程序员,十分优秀!