请教PHP面向对象设计与数据可访问的设计

php中文网
发布: 2016-06-23 14:04:01
原创
1509人浏览过

比如有一个类Person
有一个数据库操作类Conn
Person里面有一个操作是买回来一只鸡,鸡的信息要放到数据库里面去
应该怎么设计?
是在perison里面包涵Conn类,然后实例化Conn对象,访问数据库插入数据,还是怎么弄?
请高手指教!

美图设计室
美图设计室

5分钟在线高效完成平面设计,AI帮你做设计

美图设计室 29
查看详情 美图设计室

回复讨论(解决方案)

class Person extends Conn{
   function byji(){
      $conn=new Conn;//实例化数据库类
      $conn->add();//插入数据库
   }
}

class Person extends Conn{
   function byji(){
      $conn=new Conn;//实例化数据库类
      $conn->add();//插入数据库
   }
}

很高兴你能回复我,我也是这么想的,但是我的同事说最好在类里面不要写与数据库有关的代码
不知道是不是算MVC模式什么的?

class Person extends Conn{
   function byji(){
      $conn=new Conn;//实例化数据库类
      $conn->add();//插入数据库
   }
}

这种情况用组合模式还是比较好吧。继承用在这里是不合适的。

引用 1 楼 nowphp 的回复:class Person extends Conn{
   function byji(){
      $conn=new Conn;//实例化数据库类
      $conn->add();//插入数据库
   }
}

这种情况用组合模式还是比较好吧。继承用在这里是不合适的。 恩受教了,那如何写呢。

你可以把数据库的操作类conn封装成为一个数据库的操作类,直接在person中调用conn的静态方法add

引用 1 楼 nowphp 的回复:class Person extends Conn{
   function byji(){
      $conn=new Conn;//实例化数据库类
      $conn->add();//插入数据库
   }
}

这种情况用组合模式还是比较好吧。继承用在这里是不合适的。

+1
LZ应该学习一下设计模式
买鸡(这event有点让我抓狂)从业务逻辑看不是继承关系,可能你的项目是这样也说不定

业务逻辑确定一下谁(person)、操作(买)、什么(商品/鸡)三者关系
谁(主体)操作(可变)什么(可变)??访问者模式,person作为抽象类,买不是person的必然操作
谁(主体)操作(不变)什么(可变)??原型模式,买是person的必然操作,相当于一个属性
谁(可变)操作(主体且不变)什么(可变)??桥接模式,买操作作为抽象类,导入person买,和买的商品鸡
……
还可以用建造模式,购物车、下单、付费等是顺序关系,作为方法(每个都引入conn),person作为属性
类似有把一次session作为主体抽象类(组合模式),登录、购买、修改资料等其他操作都作为方法(非有序关系),person类则作为抽象类的一个属性
还有其他组合方式,自己去研究吧

但总体来说,conn连接数据库都看不出应该直接从属于person,而是从属于event的一个步骤
所以conn在桥接模式与person、商品两个类并列于抽象类,在原型模式等则二级从属于抽象类
建一个event类内部把conn类实例化为一个方法这样组合为佳
能把工作细分越多,组合方式就越多;当然说的是以类为单位,因为类本身的作用就是合并工作,类下细分反而没意义

上面说的只是我的思维角度,设计模式就是思路,某个模式内还可以有模式,而且每个人想法不同,模式就不同,不是固死的

呵呵,怎么简单就怎么来
不要上人家的圈套

呵呵,怎么简单就怎么来
不要上人家的圈套

哈哈,good advice

设计模式是从大量的实际项目开发中抽象出来的
学习设计模式的目的是让你跳出自己的思维局限,看看人家是怎么做的。仅此而已

在自己的开发实践中,硬是要套上A模式、B模式,不是自己给自己找麻烦吗

上面的咚咚我也要翻书才叫得上名字,都忘光了
我相信每个人有心学设计模式,最终总会明白自己组合的道理的

唉,人总是这样的,谁不是从小学开始老师让背什么就背什么,等慢慢学习多了,自然就知道原来要自己“组合”招式的
不晓得国外的小学教育是否如此?

谢谢xuzuning和snmr_com的指导,我太局限MVC里面了,有自己的设计模式那才是最好的,不用拘泥于某一种模式。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号