我有一个客户类,它有大约50个属性(客户详细信息)。 让客户类处于裸露状态,我担心构造函数会因为这么多属性而膨胀。 不过,我可以将这些细节分为以下类别:个人,员工,医疗等。
但我不知道是否将这些细节分组到单独的类中是一种有效的方法,只是思考。
这就是类中属性的样子:
class Insuree{
protected $_photoUrl;
protected $_refNumber;
protected $_surName;
protected $_otherName;
protected $_postalAddress;
protected $_email;
protected $_phoneNumber;
protected $_gender;
protected $_occupation;
protected $_residentialAddress;
protected $_maritalStatus;
protected $_placeOfBirth;
protected $_dateOfBirth;
protected $_idType; //Passport, Drivers license, biometric etc
protected $_nameOfEmployer;
protected $_addressOfEmployer;
protected $_phoneNumberOfEmployer;
protected $_emailOfEmployer;
protected $_paymentMode;
protected $_accountNumber;
protected $_beneficiarySurName;
protected $_beneficiaryFirstName;
protected $_beneficiaryDateOfBirth;
protected $_beneficiaryPhoneNumber;
protected $_bank;
function __construct(){}
}
class CashPlan extends Insuree
{
function __construct()
{
# code...
}
}
class HomeGoingPlan extends Insuree
{
function __construct()
{
# code...
}
}
我认为上述信息将为我要解释的内容提供一个要点。
答案 0 :(得分:0)
保持属性(数据)私有,对象由他们所做的定义;不是他们怎么做的。
如果您担心初始化过长而且做得太多,我建议传递一个负责在构造函数中处理数据库的对象。这样,您的保险公司的实施可以根据需要咨询数据库,以履行其所承担的任何职责。
interface MyAppDatabase {
public function fetchPersonalInfo();
public function fetchMedicalInfo();
}
class Insuree
{
private $db;
public function __construct(MyAppDatabase $d)
{
$this->db = $d;
}
}