迪米特法则(Law of Demeter)LoD
using System;
using System.Collections.Generic;
using System.Text; namespace LawOfDemeter
{
//也叫Least Knowledge Principle ,LKP(最少知识原则)
//Only talk to your immediate friends
//一个类应该对自己需要耦合或者调用的类知道的最少,你的内部是如何复杂都对我没关系,那是你的事,我就知道你提供这么多的public方法,我就调用这么多,其他的我一概不关心。
class Program
{
//试想这么一个场景:我们去银行取钱,当然是直接找前台业务员,和他说我要取钱,然后输入一个密码即可,至于钱是如何出来的,我们应该是无法知道了,也不必知道。
//不应该跳过业务员直接和银行打交道,在这个业务里,我们只和业务员有关系。
static void Main(string[] args)
{
BankClerk bc = new BankClerk();
bc.DrawMoney();
}
} //银行,钱从里面出,当然,出钱的过程更加复杂,我们也不必知道。
class Bank
{
public void DrawMoney(int value)
{
Console.WriteLine("银行出钞" + value + "元");
}
} //业务员
class BankClerk
{
private Bank bank = new Bank();
//取钱
public void DrawMoney(int value)
{
//银行内部的业务逻辑应该设为私有,和我们无关,他们自己的取钱规定步骤让他们自己完成。
//我们只管按照业务员的要求取钱即可。
DrawMoneyFirstStep();
DrawMoneySecondStep();
DrawMoneyThirdStep(value);
} //第一步
private void DrawMoneyFirstStep()
{
Console.WriteLine("业务员正在查询您的存折资料");
} //第二步
private void DrawMoneySecondStep()
{
Console.WriteLine("请输入您的银行密码");
Console.ReadLine();
Console.WriteLine("输入成功,验证成功。");
} //第三步
private void DrawMoneyThirdStep(int value)
{
Console.WriteLine("业务员从银行钞票机取钱");
bank.DrawMoney(value);
Console.WriteLine("取款成功,这是您的" + value + "元");
}
}
}
迪米特法则(Law of Demeter)LoD的更多相关文章
- 迪米特法则(Law of Demeter, LoD)
一个软件实体应当尽可能少地与其他实体发生相互作用 未完待续
- 迪米特法则(Law Of Demeter)
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触编程开始,就 ...
- 设计模式六大原则(五):迪米特法则(Law Of Demeter)
定义: 一个对象应该对其他对象保持最少的了解. 问题由来: 类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案: 尽量降低类与类之间的耦合. PS: 自从我们接 ...
- 设计模式原则(5)--Law of Demeter(LoD)--迪米特法则
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.定义: 一个软件实体应当尽可能少地与其他实体发生相互作用.也就是说:一个类对自己依赖的类知道的越少越好.也就是 ...
- 11. 无数人难办事? - 迪米特法则(LoD)
11.1 第一天上班 时间: 4月2日19点 地点: 小菜大鸟住所的客厅 任务: 小菜, 大鸟 "回来啦! 怎么样? 第一天上班感受多吧." 大鸟关关心的问道. ...
- 5迪米特法则LoD
一.什么是迪米特法则 迪米特法则(Law of Demeter )又叫做最少知识 原则,也就是说,一个对象应当对其他对象尽可 能少的了解. 迪米特法则最初是用来作为面向对象的系统设 计风格的一种法则, ...
- 设计模式--迪米特法则(Lod/LKP)
迪米特法则:(Law of Demeter, LoD),也称最少知识原则(Least Knowledge Principle, LKP) 理解: 假设两个类不必彼此直接通信,那么这两个类就不 ...
- IOS设计模式的六大设计原则之迪米特法则(LOD,Law Of Demeter)
定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要调用 ...
- 面向对象设计原则 迪米特法则(Law of Demeter)
迪米特法则(Law of Demeter) 又叫作最少知识原则(Least Knowledge Principle 简写LKP),英文简写为: LoD. 这是一种面向对象程序设计的指导原则,它描述了一 ...
- 5.迪米特法则(Law Of Demeter)
1.定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要 ...
随机推荐
- XE中FMX操作ListBox,添加上千条记录(含图片)
我之前是想在ListBox的每个Item上添加一个图片,Item上所有的内容都是放在Object里赋值,结果发现加载一百条记录耗时四五秒: procedure TMainForm.AddItem; v ...
- C# - dynamic 特性
dynamic是FrameWork4.0的新特性.dynamic的出现让C#具有了弱语言类型的特性.编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性. 比如,即使 ...
- ubuntu 14.04 x64下安装libreoffice
LibreOffice是ubuntu 上的办公软件很多人都知道微软公司的的Word.Excel.PowerPoint和Outlook,但是很少有人知道LibreOffice. LibreOffice靠 ...
- [.net 多线程]Monitor
Monitor 类通过向单个线程授予对象锁来控制对对象的访问.对象锁提供限制访问代码块(通常称为临界区)的能力.当一个线程拥有对象的锁时,其他任何线程都不能获取该锁.还可以使用 Monitor 来确保 ...
- windows service使用log4net 记录日志
最近写了个定时邮件推送的服务,当利用lognet4记录日志时,发现日志并没有记录.后来明白windows 服务一般默认是在C:\Windows\System 或是C:\Windows\System32 ...
- StringUtils常用方法介绍
要使用StringUtils类,首先需要导入:import org.apache.commons.lang.StringUtils;这个包 在maven项目中需要添加下面这个依赖: <depen ...
- curl下载目录
http://ftp.loongnix.org/os/loongnix/1.0/SRPMS/ wget wget -c -r -np -k -L -p
- 【BZOJ3589】动态树 树链剖分+线段树
Description 别忘了这是一棵动态树, 每时每刻都是动态的. 小明要求你在这棵树上维护两种事件 事件0: 这棵树长出了一些果子, 即某个子树中的每个节点都会长出K个果子. 事件1: 小明希望你 ...
- 如果你是后台开发者,InnoDB的小秘密,你应该知道
InnoDB简述 InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购.InnoDB支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL. 当 ...
- Reviewing notes 1.1 of Analytic geometry
Chapter 1 Vector Algebra ♦ Vector Space Vector and vector space A vector is described as a quantity ...