
设计模式
江湖人称黑哥
这个作者很懒,什么都没留下…
展开
-
正向代理与方向代理的区别(通俗易懂)
一句话概括: 两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端 详情请看: https://www.jianshu.com/p/208c02c9dd1d 讲解得很好,非常通俗易懂 ...原创 2020-03-21 14:52:37 · 333 阅读 · 0 评论 -
迭代器模式和组合模式
要点: 迭代器允许访问聚合的元素,而不需要暴露他的内部结构。 迭代器将遍历聚合聚合的工作封装进一个对象中。 当使用迭代器的时候,我们依赖聚合提供遍历。 迭代器提供了一个通用的接口,让我们遍历聚合的项,当我们编码使用聚合的项时候,就可以使用多态机制。 我们应该努力让一个类只分配一个责任。 组合模式提供一个结构,可同时包容个别对象和组合对象。 组合模式允许对象对个别对象以及组合对象一视同仁。 组合结...原创 2019-11-08 10:50:04 · 463 阅读 · 0 评论 -
模板方法模式
要点: “模板方法”定义了算法的步骤,把这些步骤的实现延迟到子类。 模板方法模式为我们提供了一种代码复用的重要技巧。 模板方法的抽象类可以定义具体方法、抽象方法和钩子 抽象方法由子类实现。 钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要覆盖它。 为了防止子类改变模板方法中的算法,可以将模板声明为final。 好莱坞原则告诉我们,将决策权放在高层模块中,以便决定如何以及...原创 2019-11-06 14:17:16 · 116 阅读 · 1 评论 -
适配器模式与外观模式
要点: 当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器。 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观。 适配器改变接口以符合客户的期望。 外观将客户从一个复杂的子系统中解耦。 实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小与复杂度而定。 实现一个外观,需要将子系统组合进外观中,然后将工作委派给子系统执行。 适配器模式有两种形式:对象适配器和类适...原创 2019-11-05 21:40:58 · 143 阅读 · 0 评论 -
命令模式
要点: 命令模式将发出请求的对象和执行请求的对象解耦。 在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作。 调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用。 调用者可以接受命令当作参数,甚至在运行时动态的进行。 命令可以支持撤销,做法是实现一个undo()方法来回到execute()被执行前的状态。 宏命令是命令的一种简单的延伸,允...原创 2019-11-05 20:11:05 · 118 阅读 · 0 评论 -
单件模式
要点: 单件模式确保程序中一个类最多只有一个实例 单件模式也提供这个实例的全局点 在JAVA中实现单件模式需要私有的构造器、一个静态方法和静态变量。 确定在性能和资源上的限制,然后小心地选择适当的方案来实现单件,以解决多线程的问题(我们必须认定所有的程序都是多线程的 如果不是采用第五版的Java2,双重检查加锁实现会失效(volatile) 小心,如果使用多个类加载器,可能导致单件失效而产生多个...原创 2019-11-05 20:03:55 · 109 阅读 · 0 评论 -
抽象工厂模式 and 工厂方法模式
要点: 所有的工厂都是用来封装对象的创建 简单工厂,虽然不是真正的设计模式但仍不失为一个简单的方法,可以将客户程序从具体类解耦 工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。 抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中 所有的工厂模式都通过减少应用程序和具体类之类的依赖促进松耦合。 工厂方法允许类将实例化延迟到子类进行。 抽象工厂创建相...原创 2019-11-05 11:24:32 · 125 阅读 · 0 评论 -
设计原则
一、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 二、针对接口编程,而不是针对实现编程。 三、多用组合,少用继承。 使用组合建立系统具有很大的弹性,不仅可讲算法族封装成类,更可以“在运行时动态的改变行为”,只要组合的行为对象符合正确的接口标准即可。 ...原创 2019-10-21 10:26:39 · 97 阅读 · 0 评论 -
装饰者模式
要点: 继承属于扩展形式之一,但不见得是达到弹性设计的最佳方案 在我们的设计中,应该允许行为可以被扩展,而无须修改现有的代码 组合和委托可用于在运动时动态地加上新的行为。 除了继承,装饰者模式也可以让我们扩展行为。 装饰者模式意味着一群装饰者类,这些类用来包装具体组件。 装饰者类反映出被装饰的组件类型(事实上,他们具有相同的类型,都经过接口或继承实现) 装饰者可以在被装饰者的行为前面与/或后面加...原创 2019-11-03 11:05:51 · 188 阅读 · 0 评论 -
观察者模式
要点: 观察者模式定义了对象之间一对多的关系。 主题(也就是可观察者)用一个共同的接口来跟新观察者 观察者和可观察者之间用松耦合方式结合(loosecoupling),可观察者不知道观察者的细节,只知道观察者实现了可观察者接口。 使用此模式时,你可从被观察者出推(push)或拉(pull)数据(然而,推的方式被认为更“正确”。) 有多个观察者时,不可以依赖特定的通知次序。 Java有多种观察...原创 2019-11-02 16:12:34 · 134 阅读 · 0 评论