(11)head_first设计模式
文章平均质量分 78
tomjourney
积善之家 必有余庆
展开
-
(转)JAVA设计模式之门面模式(外观模式)
Facade类其实相当于A、B、C模块的外观界面,有了这个Facade类,那么客户端就不需要亲自调用子系统中的A、B、C模块了,也不需要知道系统内部的实现细节,甚至都不需要知道A、B、C模块的存在,客户端只需要跟Facade类交互就好了,从而更好地实现了客户端和子系统中A、B、C模块的解耦,让客户端更容易地使用系统。有些方法是对系统外的,有些方法是系统内部使用的。门面模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。转载 2023-02-17 09:28:12 · 142 阅读 · 0 评论 -
Java三种代理模式-静态代理,动态代理和cglib代理
【README】本文阐述了3种代理模式的定义,并编写了代码测试案例;代理其实是一种设计模式,可以在访问目标对象的方法上下文添加处理逻辑(扩展目标对象的功能),是 切面编程的基石;【举个例子】 抖音直播带货就是一种代理模式;主播代理了工厂对象,提供了购买商品的方法;主播可以下调商品价格(因为走量),类似于在购买商品方法上文添加了逻辑;主播可以赠送其他商品,类似于在购买商品方法下文添加了逻辑;【代理模式URL】1.定义一个带有代理方法的接口;2.定义目标对象实现这个接口;原创 2022-01-25 23:13:37 · 608 阅读 · 0 评论 -
(转)java动态代理与aop
转自: Java 动态代理与AOP - 如果的事 - 博客园动态代理与AOP 代理模式 代理模式给某一个目标对象(target)提供代理对象(proxy),并由代理对象控制对target对象的引用。 模式图: 代理模式中的角色有: 抽象对象角色(Abstrachttps://www.cnblogs.com/chenny7/p/11201010.html...转载 2021-10-07 12:13:47 · 225 阅读 · 0 评论 -
转- java单例模式几种实现方式
转自: https://www.cnblogs.com/ngy0217/p/9006716.html ;单例模式的五种实现方式1、饿汉式(线程安全,调用效率高,但是不能延时加载): 1 2 3 4 5 6 7 public class ImageLoader{ private static ImageLoader instance = new ImageLoader; pr...转载 2021-09-01 08:37:48 · 150 阅读 · 0 评论 -
代理模式之虚拟代理(仅了解)
【0】README0.1)本文全文转自 “head first 设计模式”,旨在了解 虚拟代理+动态代理;0.2)晚辈我 java.swing 烂到渣,没有写出干货荔枝,抱歉;【1】虚拟代理简述1)远程代理:作为另一个jvm上对象的本地代表;2)虚拟代理:作为创建开销大的对象的代表;虚拟代理经常直到我们真正需要一个对象的时候才创建它;当对象在创建前或创建中时,由虚拟转载 2016-03-28 17:26:39 · 1526 阅读 · 0 评论 -
代理模式(多线程实现状态监控)
【0】README0.1)本文部分文字描述转自“head first 设计模式”,旨在学习 远程代理对象 的基础知识;【1】远程代理相关1)RMI提供了: 客户辅助对象,称为stub(桩)和服务辅助对象,称为skeleton(骨架);(干货——stub==客户辅助对象, 而skeleton==服务辅助对象)2)制作远程服务(换句话说,这些步骤将一个普通的对象变原创 2016-03-28 09:27:59 · 1786 阅读 · 0 评论 -
事务的状态(状态模式)
【0】README0.1)本文部分文字描述转自 “head first设计模式”,旨在学习 事务的状态(状态模式) 的基础知识;【1】应用场景一1.1)还记得成都市各大高校内的米源自动售卖机吗?售卖机的主要制造商发现,只要把CPU 放入机器,可以提高销量。于是乎,它们提供了一幅自动售卖机的状态图给我们,希望我们用java 帮他实现,且代码富有弹性易于扩展(下面以米源糖果售卖机原创 2016-03-26 13:16:54 · 2100 阅读 · 0 评论 -
组合模式
【0】README0.1)本文部分文字描述转自 “head first设计模式”,旨在学习 组合模式 的基础知识;【1】requirement+solution:1.1)requirement:提出新需求:在迭代器模式(开封菜和北京烤鸭合并后,采用迭代器模式遍历其菜单)的基础上,业务需求又发生了新的变化。clients 希望加上一份餐后甜点的子菜单,即甜点菜单作为父菜单的一个原创 2016-03-25 20:32:03 · 596 阅读 · 0 评论 -
迭代器模式
【0】README0.1)本文文字部分描述转自“head first设计模式”,旨在学习 迭代器模式 的基础知识;【1】迭代器模式1)定义:迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示;2)迭代器模式的作用: 迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示;把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和原创 2016-03-25 14:37:08 · 589 阅读 · 0 评论 -
外观模式
【0】README0.1)本文部分文字描述转自 “head first设计模式”,旨在学习 外观模式 的基础知识;【1】外观模式1)外观模式定义: 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用;2)引入最少知识原则:该原则告诉我们要减少对象之间的交互,只留下几个密友;3)problem+solution:3.1)pro原创 2016-03-25 10:46:47 · 595 阅读 · 0 评论 -
适配器模式
【0】README0.1)本文部分文字描述转自 "head first设计模式",旨在学习 适配器模式 的基础知识;【1】适配器模式定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间;【2】这里有鸭子pojo,火鸡pojo,我想要将火鸡 装扮为一只鸭子(这就需要适配器来起作用啦);step1)创建Duck原创 2016-03-24 22:35:02 · 697 阅读 · 0 评论 -
命令模式
【0】README0.1)本文部分文字描述转 “head first设计模式”,旨在学习 命令模式 的基础知识;【1】命令模式1.1)定义: 将请求封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作;1.2)看个简单荔枝(想象你的遥控器,该遥控器通过命令按键发出命令以 开关家用电器):step1)实现命令接口//原创 2016-03-24 11:42:13 · 671 阅读 · 0 评论 -
装饰者模式
【0】README0.1)本文部分文字描述转自: “head first设计模式”,旨在学习 装饰者模式 的基础知识;0.2)装饰者模式的源代码参见:【1】星巴克荔枝(这里的星巴克仅仅是做个模拟的用途)1.1)星巴克咖啡订单计费系统类图:1.2)problem:购买咖啡时,也可以要求加入各种调料,如:蒸奶,豆浆等。星巴克会工具加入的调料来收取不同的费用;而计费转载 2016-03-13 13:59:40 · 617 阅读 · 0 评论 -
工厂模式
【0】README0.1) 本文部分问题描述转自 “head first设计模式”,旨在学习 工厂模式 的基础知识;【1】针对接口编程1.1)problem:当使用new 关键字时,的确是在实例化一个具体类,所以用的确实是实现,而不是一个接口。但看到这样的代码,一旦有变化或扩展,就必须重新打开这段代码进行检查和修改;public Pizza orderPizza(Str原创 2016-03-23 19:23:07 · 673 阅读 · 0 评论 -
观察者模式
【0】README0.1)本文部分文字描述转自“head first 设计模式”, 旨在学习 观察者模式 的基础知识;【1】实际荔枝1.1)需求:气象站希望某公司建立一个手机app,有三种布告板,分别显示当前状况,气象统计和简单的预报;1.2)我公司的工作:建立一个app,利用 WeatherData 对象取得数据,并更新三个布告板: 当前状况、气象统计和天气预报;原创 2016-03-11 13:32:20 · 783 阅读 · 0 评论 -
设计模式入门(策略模式)
【0】README0.1)本文部分文字描述转自 “head first 设计模式”,旨在学习 设计模式入门(策略模式) 的基础知识;【1】看个荔枝(从模拟鸭子应用说起)1.1)我们让鸭子飞起来:method1)利用继承实现:在Duck中加入 fly() 方法,不过并不是所有的鸭子都会飞,比如橡皮鸭子;(干货——继承所出现的问题)Attention)利用继原创 2016-03-09 19:51:01 · 670 阅读 · 0 评论 -
单件模式(单例模式)
【0】README0.1)本文部分描述转自 “head first 设计模式”, 旨在学习 单件模式(单例模式) 的相关知识 及其应用;【1】单件模式1.0)单件模式的应用背景:有一些对象其实我们只需要一个,比方说: 线程池,缓存,对话框,注册表等的对象,这都可以通过单件模式来解决;1.1)定义:确保一个类只有一个实例,并提供一个全局访问点;1.2)全局变量的缺点:如果转载 2016-03-10 15:37:53 · 1451 阅读 · 0 评论 -
模板方法模式
【0】README0.1)本文部分描述转自 “head first设计模式”,旨在学习 模板方法模式 的基础知识;【1】看个荔枝——星巴克咖啡1.1)星巴克咖啡冲泡法steps:step1)把水煮沸;step2)用沸水冲泡咖啡;step3)把咖啡倒进杯子;step4)加糖和牛奶;1.2)星巴克茶冲泡法steps:step1)把水煮原创 2016-03-09 09:22:35 · 604 阅读 · 0 评论 -
将模板方法模式应用到kmeans聚类算法
【0】README0.1)本文描述和源代码均为原创,旨在说明 如何将模板方法模式应用到kmean聚类算法;0.2)模板方法模式的intro, 参见 模板方法模式0.3)for kmeans alg source code, please visit 【1】intro to kmeans1.1)准备工作:随机初始化聚类质心1.2)核心算法:for i in原创 2016-03-09 09:48:34 · 901 阅读 · 0 评论