外观模式:

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

  

最少知识原则:

最少知识原则:
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. element-ui多重下拉列表的使用

    template <div class="block"> <span class="demonstration">默认 click 触发 ...

  2. Android 内存 - 获取单个应用内存限制

    方法一: adb shell getprop | grep dalvik.vm.heapgrowthlimit [dalvik.vm.heapgrowthlimit]: [64m] 方法二: Acti ...

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

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

  4. 成员函数定义后面加 const 的意义

    我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值.如果把不改变数据成员的函数都加上const关键字 ...

  5. Tag 标签

    用于标记和选择. 基础用法 由type属性来选择tag的类型,也可以通过color属性来自定义背景色. <el-tag>标签一</el-tag> <el-tag type ...

  6. re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析

    题目 计算以下代码的结果 s = "?!.18)dajslj$12.15613sdadw.123sdasda35615.168sndsda$15.6sdasd.sdfsdgw123.156s ...

  7. __linux__、__POSIX__宏

    __linux__用于定义linux,__POSIX__不太了解,各系统的宏有如下: std::string getOsName() { #ifdef _WIN32 return "Wind ...

  8. Postman系列之发送请求(一)

    实验简介 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.它能提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, ...

  9. LoadRunner脚本编写之一

    LoadRunner脚本编写之一 性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不 ...

  10. .pkl文件是什么?python

    对于.pkl文件,我是在接触 SMPL模型的时候用到的.SMPL的开源项目包里,有model文件夹,打开有两个.pkl文件.然后,找到了一个说的相对比较详细的网址.https://jingyan.ba ...