迪米特法则 又叫最少知识法则

类中的成员属性和成员方法,如果不需要对外暴露,就不要设成public。

代码如下:

#include <iostream>
#include <string>
using namespace std;class AbstractBuilding
{public:virtual void sale() = 0;
};class BuildingA :public AbstractBuilding
{public:BuildingA():quilty("高品质"){}virtual void sale(){cout << "楼盘A" << quilty << "被售卖!" << endl;}string quilty;
};class BuildingB :public AbstractBuilding
{public:BuildingB() :quilty("低品质") {}virtual void sale(){cout << "楼盘B" << quilty << "被售卖!" << endl;}string quilty;
};void test01()
{BuildingA *ba = new BuildingA;if (ba->quilty == "低品质"){ba->sale();}BuildingB *bb = new BuildingB;if (bb->quilty == "低品质"){bb->sale();}
}int main()
{test01();return 0;
}

测试结果:

迪米特法则
代码如下:

#include <iostream>
#include <string>
#include <vector>
using namespace std;class AbstractBuilding
{public:virtual void sale() = 0;virtual string getQuilty() = 0;
};class BuildingA :public AbstractBuilding
{public:BuildingA():quilty("高品质"){}virtual void sale(){cout << "楼盘A" << quilty << "被售卖!" << endl;}virtual string getQuilty(){return quilty;}
private:string quilty;
};class BuildingB :public AbstractBuilding
{public:BuildingB() :quilty("低品质") {}virtual void sale(){cout << "楼盘B" << quilty << "被售卖!" << endl;}virtual string getQuilty(){return quilty;}private:string quilty;
};//中介类
class Mediator {public:Mediator(){AbstractBuilding *building = new BuildingA;vBuilding.push_back(building);building = new BuildingB;vBuilding.push_back(building);}~Mediator(){for (vector<AbstractBuilding*>::iterator it = vBuilding.begin(); it != vBuilding.end(); it++){if (*it != nullptr){delete *it;}}}//对外提供接口AbstractBuilding *findMyBuilding(string quality){for (vector<AbstractBuilding*>::iterator it = vBuilding.begin(); it != vBuilding.end(); it++){if ((*it)->getQuilty()==quality){return *it;}}return nullptr;}vector<AbstractBuilding*> vBuilding;};void test01()
{Mediator *mediator = new Mediator;//优点:用户不用跟具体楼盘打交道AbstractBuilding * building = mediator->findMyBuilding("高品质");if (building != nullptr){building->sale();}else{cout << "没有符合条件的楼盘" << endl;}
}int main()
{test01();return 0;
}

测试结果:

[设计模式]迪米特法则相关推荐

  1. 设计模式 迪米特法则

    设计模式 迪米特法则 只和朋友交流 Only talk to your immediate friends 只与直接的朋友通信.即每个对象都有耦合关系,对象之间有耦合. 定义老师类 public cl ...

  2. 浅谈设计模式-迪米特法则

    书接上回,本篇继续讲一下设计模式六大原则(有些书认为是7大原则) 原则定义 迪米特法则(Law of Demeter,LoD)的定义有点意思,有2种表述 1> 最少知道原则,指一个对象应当对其他 ...

  3. 迪米特法则 java_java设计模式--迪米特法则

    基本介绍 1.一个对象应该对其他对象保持最少的了解 2.类与类关系越密切,耦合度越大 3.迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好.也就是说,对于被依赖的类不管多么复杂,都尽量 ...

  4. Java设计模式-迪米特法则

    迪米特法则 [Low Of Demeter]   定义:一个对象应该对其他对象保持最少的了解.   问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大.   解决 ...

  5. 23种设计模式-迪米特法则

    概念: 1) 一个对象应该对其他对象保持最少的了解 2) 类与类关系越密切,耦合度越大 3) 迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的 越少越好. ...

  6. 设计模式:KISS、YAGNI、DRY 原则,迪米特法则(LOD)

    如何理解"KISS 原则"? KISS 原则的英文描述有好几个版本,比如下面这几个. Keep It Simple and Stupid. Keep It Short and Si ...

  7. 大熊君说说JS与设计模式之(门面模式Facade)迪米特法则的救赎篇------(监狱的故事)...

    一,总体概要 1,笔者浅谈 说起"门面"这个设计模式其实不论新老程序猿都是在无意中就已经运用到此模式了,就像我们美丽的JS程序员一样不经意就使用了闭包处理问题, 1 functio ...

  8. 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)...

    原文:设计模式原则(单一.开放封闭.里氏代换.依赖倒转.迪米特法则五大原则) 单一职责原则 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因.   如果一个类承担的职责过多,就等于把这些职责耦 ...

  9. 设计模式六大原则——迪米特法则(LoD)

    1.背景 在图书馆借书.刚開始的时候,直接跑到对应的楼层去,到里面去转,去找要借的书,在里面溜达半天才干找到:后来知道图书馆有一个电脑查询处.然后直接在电脑上输入想要借的书,电脑就会显示你想要借的书的 ...

最新文章

  1. php相关扩展安装及报错总结
  2. java 模拟实现mq,RabbitMQ的5种模式,并使用java进行模拟操作
  3. X64 Linux 无法从本地字符界面登陆。
  4. WebSphere通过corba调Tuxedo问题(2)
  5. 听腾讯 TEG 大佬谈腾讯万亿级 Elasticsearch 技术解密
  6. 银行应用_讲解人脸识别在银行的应用
  7. iOS常用于显示几小时前/几天前/几月前/几年前的代码片段
  8. 电源开关上的 | 和 O 究竟代表了什么?
  9. 技术周刊(2019-02-11 Serverless)
  10. mysql学习之路三(转)
  11. charles浏览器抓包https_十分钟学会Charles抓包(iOS的http/https请求)
  12. 1_Small Data Challenges in Big Data Era
  13. 如何连接一个Linux服务器
  14. 为何老显示DOTA2服务器登录中,Dota2一直 正在登录服务器的解决办法
  15. OPTEE CA和TA通信 实现从java到ca
  16. HTMl载入FLV格式网页视频播放器
  17. 数据可视化——柱状图
  18. mariadb-libs 被 mysql-community-libs-compat-8.0.26-1.el7.x86_64 取代
  19. 一个屌丝程序员的青春(一三八)
  20. 【数据分析】互联网金融客户画像

热门文章

  1. 【QGIS入门实战精品教程】2.1:初识QGIS软件
  2. 地图投影系列介绍(一)----地球空间模型
  3. C语言试题八十之统计单词个数
  4. 字符串之替换字符串中连续出现的指定字符串
  5. 【C语言简单说】五:常用运算符
  6. 怎么做图片文字二维码一起_怎么做?才能让文字编排更出彩
  7. eclipse索引4超出范围_Python内置的4个重要基本数据结构:列表、元组、字典和集合
  8. 大型打脸现场!被藐视的少女摇身一变成为“抽象代数之母”,哲学教授只能跪地喊爸爸...
  9. 颜宁问4对科研夫妻:男科学家怎样平衡事业家庭?
  10. 这个小姐姐真的很火辣......