面向对象分析与设计—创造者原则

创造者原则
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 }

猜你喜欢

转载自www.cnblogs.com/carrywl/p/12562939.html
今日推荐