创造者原则
Creator原则的本质是创建类对象职责应该委托给那个对象,也就是谁应该负责产生某个类的实例。
解决方案: 如果符合下面的一个或者多个条件,则可以将创建A的实例的职责分配给B;
B包含/聚合A
B记录A的实例
B拥有初始化A的数据并在创建A的实例时将数据传递给A
B频繁使用A
满足上述一种或者多种情况的时候,我们应该将创建A的实例的职责分配给B。
合理的creator原则带来的优点:如果职责分配合理,设计就能降低耦合,提高设计的清晰度,封装性和重用性。
示例:例如订单和商品的关系是聚合关系,这个时候我们将在订单中创建商品。
1、销售项目类
1 #ifndef SALELINELIST_H_INCLUDED 2 #define SALELINELIST_H_INCLUDED 3 4 using namespace std; 5 6 class SaleLineList{ 7 public: 8 void show(){ 9 cout<<"name"<<" "<<"num"<<" "<<"price"<<endl; 10 cout<<"可乐"<<" "<<"3"<<" "<<"3"<<endl; 11 cout<<"薯片"<<" "<<"2"<<" "<<"5"<<endl; 12 cout<<"饼干"<<" "<<"2"<<" "<<"8"<<endl; 13 } 14 }; 15 16 #endif // SALELINELIST_H_INCLUDED
2、结算类
1 #ifndef SALE_H_INCLUDED 2 #define SALE_H_INCLUDED 3 4 #include "SaleLineLIst.h" 5 6 class Sale{ 7 private: 8 SaleLineList *salelinelist; 9 public: 10 void show(){ 11 salelinelist->show(); 12 } 13 public: 14 Sale(){ 15 salelinelist=new SaleLineList; 16 } 17 ~Sale(){ 18 delete salelinelist; 19 } 20 }; 21 22 #endif // SALE_H_INCLUDED
3、创建销售项目类实例的职责分配给结算类,在main函数中,实例化结算类。
1 #include <iostream> 2 #include "Sale.h" 3 4 using namespace std; 5 6 int main() 7 { 8 Sale *sale1=new Sale(); 9 sale1->show(); 10 return 0; 11 }
原文:https://www.cnblogs.com/carrywl/p/12562939.html