Facade, Mediator, Composite, Flyweight

2023-11-08 19:32

本文主要是介绍Facade, Mediator, Composite, Flyweight,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、Facade 外观/门面模式。

Facade就是抽象出对外的接口层,由此实现访问端和业务端的关联。外观 (Facade) 提供了一种访问特定子系统功能的便捷方式, 其了解如何重定向客户端请求, 知晓如何操作一切活动部件。

我觉得nginx其实就一个系统的Facade。

 

2、Mediator 中介者模式

Mediator跟Facade有点类似,Facade是外部访问者与系统内部组件之间解耦的, Mediator是系统内部子系统之间的解耦。

我觉得消息中间件MQ,注册中心eureka都算是Mediator

 

3、Composite组合模式

用来处理树状结构的。

https://note.youdao.com/yws/public/resource/3cffc4f2f5185a0d83050a1d59b9ec93/xmlnote/E9D7DA1DA377403D93CAF4FB9C039088/0C97E3270AF34D4DBEBC5490539BAD75/2046

4、Flyweight 享元模式

共享元素,如果程序中创建了很多对象,而且这些对象有很多重复的属性的话,重复的属性建议抽象出单独的对象使用享元模式,而其他可变的属性抽象出可变的对象,引用重复属性的对象即可。

线程池其实是一种享元模式。 String也是用了享元模式。对于String常量,会放到常量池,具体的引用直接指向常量池。

public class TestString {public static void main(String[] args) {String s1 = "abc";String s2 = "abc";String s3 = new String("abc");String s4 = new String("abc");System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s1 == s3.intern());System.out.println(s3 == s4);System.out.println(s3.intern() == s4.intern());}
}

结果是:

true
false
true
false
true

https://note.youdao.com/yws/public/resource/3cffc4f2f5185a0d83050a1d59b9ec93/xmlnote/E9D7DA1DA377403D93CAF4FB9C039088/82357BCA8CD141E69E0EB42363A76D88/2047

 

 

 

 

 

 

 

 

这篇关于Facade, Mediator, Composite, Flyweight的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372013

相关文章

结构型设计模式-元享(flyweight)模式-python实现

设计模式汇总:查看 通俗示例 想象一下你正在经营一家图书馆,图书馆里有成千上万本书。如果每本书都是一个独立的对象,那么它们将占用大量的内存空间,因为每本书都包含一些相同的信息,比如出版商、出版年份等。为了节省内存,你可以采用一种方式,即只创建一个出版商和出版年份的实例,然后让所有书共享这些信息。这种做法在软件设计中就类似于“元享模式”。 通俗解释 元享模式是一种结构型设计模式,它通过

AAPT err(Facade for 1224284530): libpng error: Not a PNG file

Android studio 在导入别的项目时候报这样的错误。 :app:mergeDebugResourcesError:Execution failed for task ':app:mergeDebugResources'.Some file crunching failed, see logs for details 如下图 错误原因:这是由于Android studio在bu

行为型设计模式-中介者(mediator)模式-python实现

设计模式汇总:查看 通俗示例 想象一下你正在参与一个团队项目,团队成员包括设计师、前端开发者、后端开发者、测试工程师等。每个团队成员都需要与其他成员沟通协作,比如设计师完成设计后需要通知前端开发者开始开发,前端开发者完成后需要通知测试工程师进行测试。如果每个团队成员都直接与其他所有团队成员沟通,那么沟通线路会变得非常复杂。为了简化这个过程,团队可以引入一个项目经理的角色,所有团队成员只与

设计模式 -- 组合模式(Composite Pattern)

1 问题引出         编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 2 基本介绍 组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。 组合模式依据树形结构来组合对象,用来表示部分以及整体层次。

【Design Pattern】-----Facade

【Design Pattern】-----Facade   目录 基础概念...  类图:... java版   Facade.       SystemOne.java.       StystemTwo.java.       StystemThree.java.       StystemFour.java.       Facade

突破编程:C++中的组合模式(Composite Pattern)

突破编程:C++中的组合模式(Composite Pattern) 在软件设计领域,组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式让客户端代码可以一致地处理单个对象和组合对象,无需关心对象的具体类型,从而简化了客户端代码。在C++中实现组合模式,可以充分利用C++的面向对象特性和模板等高级功能,以优雅地解决

设计模式之Decorator装饰者、Facade外观、Adapter适配器(Java)

装饰者模式 设计模式的基本原则,对内关闭修改。 Decorator Pattern,装饰者模式,也叫包装器模式(Wrapper Pattern):将一个对象包装起来,增加新的行为和责任。一定是从外部传入,并且可以没有顺序,按照代码的实际需求随意挑换顺序。当使用装饰器模式时,通常将原始对象作为一个参数传给装饰者的构造器。注重功能拓展,关注于在一个对象上动态的添加方法,在同一个方法下实现更多的功能

C++设计模式——Flyweight享元模式

一,享元模式简介 享元模式是一种结构型设计模式,它将每个对象中各自保存一份数据的方式改为多个对象共享同一份数据,该模式可以有效减少应用程序的内存占用。 享元模式的核心思想是共享和复用,通过设置共享资源来避免创建过多的实例。 当应用程序的内部包含大量的对象,且对象之间包含相似的数据或状态时,可以使用享元模式来共享这些数据或状态。 享元模式的内部涉及到工厂模式的使用,因为它

设计模式之外观模式-facade

外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。   1. 外观模式概述       不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说

C++设计模式——Composite组合模式

一,组合模式简介 真实世界中,像企业组织、文档、图形软件界面等案例,它们在结构上都是分层次的。将系统分层次的方式使得统一管理和添加不同子模块变得容易,在软件开发中,组合模式的设计思想和它们类似。 组合模式是一种结构型设计模式,该模式将对象组合成树状结构,以便于分层和统一管理。 组合模式用于为复杂的分层的系统结构定义基本的蓝图,并对外提供统一的接口,简化了系统组件的使用方法。 二,组合模