关键实施示例
1. 数据库层分离
// bad - mixed concerns class user { public function save() { $db = new pdo('mysql:host=localhost;dbname=app', 'user', 'pass'); $stmt = $db->prepare("insert into users (name, email) values (?, ?)"); $stmt->execute([$this->name, $this->email]); } } // good - separated database logic class user { private string $name; private string $email; } class userrepository { private pdo $db; public function save(user $user) { $stmt = $this->db->prepare("insert into users (name, email) values (?, ?)"); $stmt->execute([$user->getname(), $user->getemail()]); } }登录后复制
这个很好的例子将数据结构(user)与存储逻辑(userrepository)分开。这使得代码更易于维护,并且允许在不修改 user 类的情况下更改存储方法。
2. 验证分离
// bad - mixed validation and business logic class order { public function process() { if (empty($this->items)) { throw new exception('order cannot be empty'); } if ($this->total < 0 xss=removed>getitems())) { $errors[] = 'order cannot be empty'; } if ($order->gettotal() < 0 errors[] = 'invalid total amount'> 登录后复制验证逻辑移至专用验证器类,使 order 类能够专注于业务逻辑。
3.视图/模板分离
// bad - mixed html and logic class productpage { public function show($id) { $product = $this->getproduct($id); echo "登录后复制{$product->name}
"; echo "price: ${$product->price}
"; } } // good - separated presentation class productcontroller { public function show($id) { $product = $this->productrepository->find($id); return $this->view->render('product/show', ['product' => $product]); } } // product/show.php template<?= htmlspecialchars($product->name) ?>
price: $<?= htmlspecialchars($product->price) ?>
这个很好的例子将显示逻辑分离到模板中,使代码更易于维护,并允许设计人员独立工作。
4. 服务层分离
// bad - mixed business logic class ordercontroller { public function checkout() { $order = new order($_post['items']); $payment = new payment($_post['card']); $payment->process(); $order->updatestatus('paid'); $email = new emailservice(); $email->sendconfirmation($order); } } // good - separated services class orderservice { private paymentservice $paymentservice; private emailservice $emailservice; public function processorder(order $order, paymentdata $paymentdata): void { $this->paymentservice->process($paymentdata); $order->updatestatus('paid'); $this->emailservice->sendconfirmation($order); } } class ordercontroller { public function checkout() { $this->orderservice->processorder($order, $paymentdata); } }登录后复制服务层处理复杂的业务逻辑,使控制器专注于请求处理。
5、配置分离
// Bad - Hardcoded configuration class EmailSender { private $host = 'smtp.example.com'; private $port = 587; public function send($message) { // Sending logic using hardcoded values } } // Good - Separated configuration // config/mail.php return [ 'host' => 'smtp.example.com', 'port' => 587 ]; class EmailSender { private array $config; public function __construct(array $config) { $this->config = $config; } public function send($message) { // Sending logic using config values } }登录后复制配置与实现分离,使代码更加灵活和可维护。无需修改代码即可更改设置。
以上就是关注点分离 (SoC)的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 关注点分离 (SoC)
发表评论 取消回复