Head First 设计模式 —— 13. 代理 (Proxy) 模式

思考题 如何设计一个支持远程方法调用的系统?你要怎样才能让开发人员不用写太多代码?让远程调用看起来像本地调用一样,毫无瑕疵? P435 已经接触过 RPC 了,所以就很容易知道具体流程:客户端调用目标类的代理对象(消费者)的方法,消费者内部将相关调用信息通过网络传到服务端对应的目标类的代理对象(生产 ... »

观察者模式,无需多线程完成数据监听

大家好,我们今天来了解一个新的设计模式——观察者模式。 观察者模式的思路很简单,它被广泛地用在各种数据监控上。很多时候我们希望监听某个数据的变化,希望一旦获悉它的变化之后立即采取一些举措。按照常规的操作,我们需要开启额外的线程来进行监听。但是开启线程一则非常麻烦,二则需要带来额外的开销,我们今天介绍 ... »

Head First 设计模式 —— 11. 组合 (Composite) 模式

思考题 我们不仅仅要支持多个菜单,升值还要支持菜单中的菜单。你如何处理这个新的设计需求? P355 【提示】在我们的新设计中,真正需要以下三点: P354 我们需要某种属性结构,可以容纳菜单、子菜单和菜单项 我们需要确定能够在每个菜单的各个项之间游走,而且至少要像现在用迭代器一样方便 我们也需要能够 ... »

深入浅出Dotnet Core的项目结构变化

有时候,越是基础的东西,越是有人不明白。 前几天Review一个项目的代码,发现非常基础的内容,也会有人理解出错。 今天,就着这个点,写一下Dotnet Core的主要类型的项目结构,以及之间的转换和演化。 一、最基础的应用Console 控制台应用,是Dotnet Core乃至前边的Dotnet ... »

Head First 设计模式 —— 09. 模版方法 (Template Method) 模式

模板方法模式 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 P289 特点 主导算法框架,并且保护这个算法 P288 最大化复用代码 P288 算法只存在于一个地方,容易修改 P288 专注算法本身,由子类提供完整 ... »

Head First 设计模式 —— 08. 外观 (Facade) 模式

思考题 想想看,你在 JavaAPI 中遇到过哪些外观,你还希望 Java 能够新增哪些外观? P262 println、log 日志接口、JDBC 接口 突然让想感觉想不出来,各种 API 都用得挺顺的,没有太麻烦的使用 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高 ... »

什么是中介者模式

1 定义 中介者模式是一种行为设计模式,让程序组件通过特殊的中介者对象进行间接沟通, 达到减少组件之间依赖关系的目的。 中介者能使得程序更易于修改和扩展, 而且能更方便地对独立的组件进行复用, 因为它们不再依赖于很多其他的类。 2 例子 假如有房东,中介,房客三种角色,房东有房子可以出租就通知中介, ... »

Head First 设计模式 —— 07. 适配器模式

思考题 你能想到真实世界中,还有哪些适配器的例子? P236 HDMI 转 VGA 转换器 Type-C 转 3.5mm 线 适配器模式解析 客户使用适配器的过程: P241 客户通过目标接口调用适配器的方法对适配器发出请求 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口 客户接收到 ... »

不写垃圾代码,从学会这个设计模式开始

大家好,我们今天来一起学习一个新的设计模式,叫做媒介模式。 所谓的媒介其实是一种封装的思想,把某些功能共同的逻辑抽象出来做成一个中间的媒介,从而减少代码之间的耦合,提升拓展性,更加方便日后的需求变更。 简单案例 我们用一个实际的例子来认知一下媒介这个设计模式。 假设我们要做一个聊天室,如果真要去做的 ... »

Head First 设计模式 —— 04. 工厂 (Factory) 模式

思考题 如何将实例化具体类的代码从应用中抽离,或者封装起来,使它们不会干扰应用的其他部分? P111 将实例化具体类的代码放入一个对象中管理,通过不同入参决定实例化具体的类 简单工厂 不是23种GOF设计模式之一,而更像一种编程习惯。 P117 特点 通常利用静态方法创建实例,但这样无法通过继承来改 ... »

PHP设计模式之代理模式

PHP设计模式之代理模式 代理模式定义 为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。 代理模式使用场景 当需要隐藏一个类的时候; 可以在代理类中做访问委托类的权限管理; 当我们需要对委托类功 ... »

策略模式(Strategy)

策略模式(Strategy) 策略模式定义 策略模式是把算法,封装起来。使得使用算法和使用算法环境分离开来,当算法发生改变时,我们之需要修改客户端调用算法,和增加一个新的算法封装类。比如超市收银,收营员判断顾客是否是会员,当顾客不是会员时候,按照原价收取顾客购买商品费用,当顾客是会员的时候,满100 ... »

设计模式-代理模式

代理模式 参考资料 图解设计模式 大话设计模式 设计模式之禅 github我见过最好的设计模式 http://c.biancheng.net/view/1326.html 定义 代理模式为其他对象提供一种代理,用来控制对于这个对象的访问 在客户类和目标类之间起到中介作用 结构型设计模式 类图 生活中 ... »

JavaScript设计模式

设计模式简介: 设计模式是可重用的用于解决软件设计中一般问题的方案。设计模式如此让人着迷,以至在任何编程语言中都有对其进行的探索。 其中一个原因是它可以让我们站在巨人的肩膀上,获得前人所有的经验,保证我们以优雅的方式组织我们的代码,满足我们解决问题所需要的条件。 设计模式同样也为我们描述问题提供了通 ... »

迭代器设计模式,帮你大幅提升Python性能

大家好,我们的git专题已经更新结束了,所以开始继续给大家写一点设计模式的内容。 今天给大家介绍的设计模式非常简单,叫做iterator,也就是迭代器模式。迭代器是Python语言当中一个非常重要的内容,借助迭代器我们可以很方便地实现很多复杂的功能。在深度学习当中,数据的获取往往也是通过迭代器实现的 ... »

设计模式-工厂模式

参考资料 图解设计模式 大话设计模式 设计模式之禅 github我见过最好的设计模式 设计原则回顾 设计原则 解释 开闭原则 对扩展开放,对修改关闭 依赖倒置原则 通过抽象让哥哥模块互不影响,松耦合,面向接口编程 单一职责原则 一个接口,类,方法只做一件事 接口隔离原则 保证纯洁性,不应该依赖于自己 ... »

23种设计模式 - 单例模式​

​ 23种设计模式 - 单例模式 1.关于单例模式的一些说明 单例模式:确保一个类最多只有一个实例,提供一个全局访问点 注意: 单例类只能有一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 单例模式可以分为两种:预加载和懒加载(即饿汉式和懒汉式) 2.两种形式详解 1 ... »

5.装饰模式 Decorator (单一职责)

结合:Android设计模式 006 装饰者模式 【B站】对整个重构的细节讲的容易懂Android的设计模式-装饰者模式 【简书】结合安卓源码讲的还可以,让我对context有更深入的理解1.模式定义 动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承 ... »