外观模式

设计模式之Memento(备忘机制)

无人久伴 提交于 2019-12-05 20:35:16
1、创建型模式 JDK1.5枚举Singleton 单例模式 AbstractFactory 工厂方法模式 简单工厂模式 Builder Prototype 2、结构型 java设计模式—Adapter模式 从Decorator,Adapter模式看Java的IO库 Bridge Composite Decorator 外观模式 Facade Pattern 享元模式 Flyweight Pattern 代理模式 3、行为型 职责链模式 Chain of Responsibility Pattern Java之命令模式(Command Pattern) Iterator ( JAVA迭代器与迭代模式 ) 调停者模式(Mediator) 设计模式之Memento(备忘机制) Observer State Strategy Visitor 原文作者: duanxz 原文地址:https://www.cnblogs.com/duanxz/p/3633475.html 来源: https://www.cnblogs.com/wjqhuaxia/p/11945718.html

结构型模式:Facade 外观模式

旧城冷巷雨未停 提交于 2019-12-05 06:21:31
结构型模式:Facade 外观模式 1、系统的复杂度 1)假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。 //车轮 public class Wheel { public void WAction1(){......} public void WAction2(){......} } //引擎 public class Engine { public void EAction1(){......} public void EAction2(){......} } //车身 public class Bodywork { public void BAction1(){......} public void BAction2(){......} } //控制器 public class Controller { public void CAction1(){......} public void CAction2(){......} } 2)如何使用这样的系统 A方案:各种作战环境(外部接口)与坦克车子系统直接交互,是个紧耦合。 B方案:各种作战环境(外部接口)与一个Facade交互,Facade与坦克车子系统交互。外部接口与子系统没有耦合关系。 2、动机(Motivation) 1

设计模式之外观模式

两盒软妹~` 提交于 2019-12-03 11:41:34
1 影院管理项目 组建一个家庭影院: DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开 DVD,选 dvd 去拿爆米花 调暗灯光 播放 观影结束后,关闭各种设备 2 传统方式解决影院管理 3 传统方式解决影院管理问题分析 在 ClientTest 的 main 方法中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程混乱,没有清晰的过程,不利于在 ClientTest 中,去维护对子系统的操作 解决思路: 定义一个高层接口 ,给 子系统中的一组接口提供一个一致的界面 (比如在高层接口提供四个方法 ready, play, pause, end ),用来访问子系统中的一群接口 也就是说 就是通过定义一个一致的接口(界面类),用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节 => 外观模式 4 外观模式基本介绍 基本介绍 外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口 提供一个一致的界面 ,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 外观模式通过定义一个一致的接口,用 以屏蔽内部子系统的细节 ,使得 调用端只需跟这个接口发生调用 ,而无需关心这个子系统的内部细节

设计模式-门面模式

帅比萌擦擦* 提交于 2019-12-03 10:03:29
###门面模式 ####门面模式意图 通过门面的包装,使应用程序只能看到门面对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。 例子: 一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的门面模式设计。 图示 ####门面模式实现 使用门面模式可以选择性地暴露方法。一个模块中定义的方法可以分成两部分,一部分是给子系统外部使用的,一部分是子系统内部模块之间相互调用时使用的。有了Facade类,那么用于子系统内部模块之间相互调用的方法就不用暴露给子系统外部了。 public class Module { /** * 提供给子系统外部使用的方法 */ public void a1(){}; /** * 子系统内部模块之间相互调用时使用的方法 */ public void a2(){}; public void a3(){}; } public class ModuleB { /** * 提供给子系统外部使用的方法 */ public void b1(){}; /** * 子系统内部模块之间相互调用时使用的方法 */ public void b2(){}; public void b3(){}; } public class ModuleC { /** *

C#设计模式之外观模式

匿名 (未验证) 提交于 2019-12-03 00:22:01
外观模式和装饰模式感觉都像是关于打扮,但是个人认为二者区别是很大的。那么什么是外观模式呢?外观模式的作用又是什么? 英文:Facade what 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 体现了 依赖倒转原则 和 迪米特法则 的思想。是非常常用的模式之一。 作用:降低耦合度等。 外观模式再i什么时候使用比较好呢?分为三个阶段。 1. 设计初期阶段 :比如经典的三层架构,层与层之间建立外观模式Facade,(为复杂的子系统提供一个简单的接口,大大降低了耦合度) 2. 开发阶段: 子系统往往因为不断重构演化而变得复杂,增加外观Facade可以提供一个简单的接口,减少了类之间的依赖。 3. 维护一个遗留的大型系统时: 此时这个系统可能已经很难维护和扩展了牡丹石新需求开发还要依赖它,这时可为系统开发一个外观类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互。即新系统调用接口。 具体类(股票,国债,房地产等) class Stock1 //股票1 { //卖股票 public void Sell() { Console.WriteLine( "股票1卖出" ); } //买股票 public void Buy() { Console.WriteLine( "股票1买入" ); } }

外观模式

匿名 (未验证) 提交于 2019-12-02 23:06:17
外观模式是为了解决类与类之间的依赖关系的,就是把那些类的实例都放在一个Facade类中,降低类之间的耦合度 public class CPU { public void startup(){ System.out.println("CPU 启动"); } public void shutdown(){ System.out.println("CPU 关闭"); } } public class Memory { public void startup(){ System.out.println("内存启动"); } public void shutdown(){ System.out.println("内存关闭"); } } public class Disk { public void startup(){ System.out.println("磁盘启动"); } public void shutdown(){ System.out.println("磁盘关闭"); } } public class Computer { private CPU cpu; private Memory memory; private Disk disk; public Computer() { this.cpu = new CPU(); this.memory = new Memory();

外观模式

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-01 22:25:13
外观模式 外观模式是对象的结构模式, 外部与一个子系统的通信必须通过一个统一的外观对象进行 。外观模式是一个高层次的接口,使得子系统更易于使用。 医院的例子 现代的软件系统都是比较复杂的。假如把医院比作一个子系统,按照部门职能,这个系统划分为挂号、门诊、划价、化验、收费、取药等。看病的人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事。 解决这种不便的方法便是引入外观模式,医院可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。病人只需要接触接待员,由接待员与各个部门打交道。 外观模式的结构 外观模式的结构可以这么表示: 这个图中,体现了两种角色: 1、外观角色 客户端调用这个角色的方法。此角色知晓相关的子系统的功能和责任,正常情况下,本角色会将所有从客户端发来的请求委派到响应的子系统中 2、子系统角色 可以同时有一个或多个子系统,每个子系统都不是一个单独的类,而是一个类的集合。每个子系统都可以被客户端直接调用,或者被外观角色直接调用。子系统并不知道外观角色的存在,对于子系统而言,外观仅仅是另外一个客户端而已 外观模式示例 模拟三个子系统ModuleA、ModuleB、ModuleC: public class ModuleA { public void testA() { System.out.println(

Unity---游戏设计模式(2)之外观模式

China☆狼群 提交于 2019-12-01 06:11:15
目录 1、外观模式原型 2、外观模式实例 概述参考请看 参考博客 外观模式通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 1、外观模式原型 外观模式原型的UML图 外观模式代码 public class SubSystem1 { public void Method1() { //业务系统代码 } } public class SubSystem2 { public void Method2() { //业务系统代码 } } public class SubSystem3 { public void Method3() { //业务系统代码 } } /// <summary> /// 外观模式原型代码 /// </summary> public class FacadeMode { public SubSystem1 system1 = new SubSystem1(); public SubSystem2 system2 = new SubSystem2(); public SubSystem3 system3 = new SubSystem3(); public void Work() { system1.Method1(); system2.Method2(); system3

设计模式之外观模式

耗尽温柔 提交于 2019-11-30 02:50:54
外观模式概念: 外观模式为子系统中的一组接口提供了一个一致的界面,此模块定义了一个 高层接口,这个接口使得这一子系统更加容易使用。 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式经常被认为开发者必备, 它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用。 外观模式作用: 1.在设计初期,应该要有意识的将不同的两个层分离,比如经典的三层结构。 2.在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观F 可以提供一个简单的接口,减少他们之间的依赖。 3.在维护一个遗留的大型系统,为系统开发一个外观Facade类,为设计粗糙和高度复杂的遗留代码提供比较清晰 的接口,让新系统和Facade对象交互。 注意事项: 1.外观模式被开发者连续使用时会产生一定的性能问题,因为在每次调用时要检测功能的可用性。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body>

设计模式之门面模式(外观模式) (十一)

旧时模样 提交于 2019-11-29 12:42:03
说到了门面模式,有些地方又叫做外观模式,这个模式在平时做Web项目中应该是经常用到,像我们的Service层与DAO层,就是用到了门面模式,Controller层本来是需要跟一个个DAO打交道,但是有了Service层,它直接与DAO打交道,Controller就可以直接使用Service,我们只需专注在Service上写业务逻辑与操作DAO的各种方法,分离了责任,这个模式我认为最重要的功能就是解耦,降低了系统复杂度。 定义:外观模式是软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。 定义与类图来自百度百科。 我们可以从定义与类图知道,门面模式就是为所有的子系统提供一个统一的高层的接口,负责子系统集合的功能的使用,下面举个例子,更清晰的了解这个模式。这里我举个在京东买键盘鼠标的例子。 首先是各个子系统,也就是各个京东的店家,有卖电脑的实体店,有卖键盘的实体店。 package test; public class ComputerStore { public void getComputer() { System.out.println("从仓库里拿电脑"); } public void sendComputer() { System.out.println("让快递把电脑寄给买家"); } } package