外观模式:

外观模式:提供一个统一的接口,来访问子系统中一群功能相关接口(类似一键启动,一键关闭等等)
外观模式定义了一个高层接口,让子系统更容易使用
降低对外接口耦合度
外观模式和命令模式各自侧重点,使得外面跟里面解耦
命令模式侧重点是把命令包装成对象(本身系统接口不变),外观模式是对子系统里面的接口进行简化

  

最少知识原则:

最少知识原则:
1,最少知识原则的意义
尽量减少对象之间的交互,只留几个“密友”,项目设计中就是不要让太多的类偶合在一起。如果一个对象
,如果你要跟它交互和联系的对象和类很多,那这个系统设计的时候,维护起来会很麻烦,升级的时候,牵一发而动全身
。所以最好设计成类交互对象少,又小。不要让太多的类耦合在一起。这样的好处是一个类的变动
,或者这个类设计的时候有偏差,不会大范围拓展出去。所以我们在维护升级的时候更加容易地定位。这样便于维护升级。
2,如何遵循最少知识原则
对象的方法调用范围:该对象本身,作为参数传进来的对象,此方法(自身)创建和实例化的对象[说明:有时候一个方法的返回值也是一个对象,作为返回值的对象在使用的时候,就不在这个范围内
,所以返回值的对象在使用就是违背最少知识原则了,这是个例外],对象的组件。
注意:方法的返回值对象最好不要用,在项目中,如果发现类很多,或对象很多,就要采用最少知识原则,使得维护更简便简单
3,外观模式和最少知识原则

  违背最少知识原则[返回值是个对象]示例:

package com.java.jikexueyuan.facademode.hometheater;

public class Car{
Engine engine;
public Car()
{
//初始化发动机
} public void start(Key mKey)
{
Doors doors=new Doors();
boolean authorized=mKey.turns(); //如果这里返回的是子key【对象】的话就违背了最少知识原则,但是这里是boolean变量就没事
if(authorized)
{
engine.start();
doors.lock();
}
} }

  来源:极客学院

Java设计模式之外观模式和最少知识原则的更多相关文章

  1. java设计模式之外观模式(门面模式)

    针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下. 一.概念介绍 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口.这种类型的设计 ...

  2. Java设计模式之五 ----- 外观模式和装饰器模式

    前言 在上一篇中我们学习了结构型模式的适配器模式和桥接模式.本篇则来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这 ...

  3. 【JAVA设计模式】外观模式(Facade Pattern)

    一  定义 为子系统中的一组接口提供一个一致的界面.Facade模式定义了一个高层的接口,这个接口使得这一子系统更加easy使用. 二  案例 一个子系统中拥有3个模块.每一个模块中都有3个方法.当中 ...

  4. java设计模式之外观模式

    外观模式概念 外观模式又称为门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个搞层次接口,使得这一个子系统更加容易使用.这一模式完美的体现了依赖倒转原则和迪米特法则的思想,所以是非常常 ...

  5. 由一名保安引发的Java设计模式:外观模式

    目录 应用场景 外观模式 定义 意图 主要解决问题 何时使用 优缺点 结构 保安的故事 应用场景 使用方要完成一个功能,需要调用提供方的多个接口.方法,调用过程复杂时,我们可以再提供一个高层接口(新的 ...

  6. JAVA设计模式--装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...

  7. 设计模式之 外观模式详解(Service第三者插足,让action与dao分手)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,LZ今天给各位分享一 ...

  8. 设计模式之外观模式(Facade Pattern)

    一.什么是外观模式? 简单的说,外观模式是用来简化接口的. 通常,我们觉得一个子系统不好用,可能是因为它提供的外部接口太接近低层组件,让我们用起来感到很麻烦. 因为我们不需要知道内部细节,我们只想要一 ...

  9. java设计模式4——原型模式

    java设计模式4--原型模式 1.写在前面 本节内容与C++语言的复制构造函数.浅拷贝.深拷贝极为相似,因此建议学习者可以先了解C++的该部分的相关知识,或者学习完本节内容后,也去了解C++的相应内 ...

随机推荐

  1. python3 使用flask连接数据库出现“ModuleNotFoundError: No module named 'MySQLdb'”

    本文链接:https://blog.csdn.net/Granery/article/details/89787348 在使用python3连接MySQL的时候出现了 ‘ModuleNotFoundE ...

  2. $\LaTeX$数学公式大全13

    $13\ Text\ Mode:\ Accents\ and\ Symbols$ $\AA$ \AA $\S$ \S

  3. <% 拼写页面

    js中 function udSelect(obj){ var val = $("#"+obj.id).val(); $("select[cd="+obj.id ...

  4. beta week 2/2 Scrum立会报告+燃尽图 05

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9957 一.小组情况 组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名: ...

  5. legend3---6、legend3爬坑杂记

    legend3---6.legend3爬坑杂记 一.总结 一句话总结: 学东西不做项目也学不到深处,其实也就是学了没理解透, 1.lavarel中模型关联可以用的实质是? lavarel在数据库中插入 ...

  6. windows实用cmd命令总结

    D: 进入D盘 cd D:\eclipse   进入D盘后进入D盘下的某个路径 Ipconfig 查看计算机ip Cls 清空命令行 ping ip(主机名) 测试网络是否畅通 Help 查看所有的d ...

  7. react源码之render

    1.最近学习react源码,刚刚入门,看了render的原理,到了fiberRoot的创建 如图:

  8. linux读xml文件问题

    由于从配置文件中读取到的路径名的最后多了个0x0A,害我折腾了半天. 提示也很奇葩: I/O warning : failed to load external entity 关键是从这个提示看不出是 ...

  9. Unity和Mef的比较

    1:Mef和Untiy都支持依赖注入 2:Mef支持插件的机制 3:Mef在写法上更简单灵活 4:Mef在宏观上比Unity更加庞大 5:Mef不支持Aop的切入拦截,Unity支持

  10. SqlServer索引的原理与应用(转载)

    SqlServer索引的原理与应用 索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 索引是什么:数据库中的索引类 ...