设计模式
jwt_
这个作者很懒,什么都没留下…
展开
-
纯的责任链模式 --1
纯的责任链模式责任链模式是一种对象的行为模式。 在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,知道链上某一个对象决定处理这个请求。发出请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态重新组织链和分配责任。抽象处理者package com.javapatterns.chainofresp;...原创 2018-06-13 21:40:47 · 407 阅读 · 0 评论 -
设计模式之状态模式
状态模式状态模式允许对象内部状态改变的时候改变其行为。状态模式是对象的行为模式。状态模式就是把对象的状态封装在一个状态对象中,每个状态一个类。图如下:抽象的状态角色TcpState封装了一个特定的状态对应的行为;具体状态角色TcpEstablesedSate(已连接状态),TcpListeningSate(监听状态),TcpClosedState(关闭状态)代表了tcp连接的所有状态(模...原创 2019-09-03 19:22:15 · 421 阅读 · 0 评论 -
适配器模式
适配器模式适配器模式把一个类的接口转换成客户端所期待的另一个中接口,使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。一个电器的例子现在有一个电器,电器自带的插头是两脚的,但是现在只有三孔的插排,所以需要一个中间的适配器进行适配:先写两个接口:/** * * 源角色,两脚插头 Target */public interface Plug2 { //插头插入两孔插排方...原创 2019-03-23 19:39:34 · 148 阅读 · 0 评论 -
代理模式:控制对象访问
远程代理远程代理就是“远程对象的本地代表”。远程对象就是活在不同jvm中的对象(在不同地址空间运行的远程对象)。本地代表是可以由本地方法调用的对象,其行为会转发到远程对象中。远程方法调用是如何发生的客户对象调用客户辅助对象的doBigThing()方法。客户辅助对象打包调用信息(方法、变量名等),通过网络运给服务辅助对象。服务辅助对象把来自客户辅助对象的信息解包,找出被调用的方法,然后...原创 2019-03-09 16:57:34 · 271 阅读 · 0 评论 -
设计模式之模板方法
模板方法的用意模板方法是类的行为模式,准备一个抽象类,将部分逻辑以具体方法以及具体构造方法的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。1 填空题比如要在控制台输出一句话System.out.println("你好," + ____ + "@" + System.currentTimeMillis());...原创 2019-01-16 19:11:49 · 188 阅读 · 0 评论 -
设计模式之工厂方法
工厂方法模式的用意是定义一个创建产品角色的工厂接口,将实际创建工作推迟到子类中。简单工厂的优缺点开闭原则:对拓展开放,对修改关闭。一个工厂类处于对产品实例化的中心位置上,它知道每一个产品,并决定哪一种产品将要被创建,这个模式的有点是允许客户端相对独立于产品创建的过程,也就是说它在一定程度上支持“开闭原则”。但是当有新的产品需要被加入的时候,需要修改工厂类,所以他对“开闭原则”的支持还不够。...原创 2019-01-07 19:28:02 · 157 阅读 · 0 评论 -
设计模式学习之简单工厂--5
简单工厂简单工厂其实不是一种设计模式,反而比较像是一种编程习惯。假设我们有一个披萨店,披萨种类包括CheesePizza(芝士披萨)、PepperoniPizza(辣味香肠披萨)等。public class CheesePizza implements Pizza{ @Override public void show() { System.out.println("芝士披萨!");...原创 2019-01-03 13:34:24 · 183 阅读 · 0 评论 -
设计模式学习之策略模式 --2
设计模式学习之策略模式定义定义了算法族,分别封装起来,让它们可以相互替换,此模式让算法的变化独立于使用算法的用户。使用的原则:找出应用中可能需要变化的地方,把他们独立出来,不要和那些需要变化的代码混合在一起。针对接口编程,而不是针对实现编程,实际上是针对超类型编程,变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要具体实现此超类型的类所产生的对象,都可以指定...原创 2018-12-24 19:19:06 · 211 阅读 · 0 评论 -
设计模式学习之观察者模式--3
定义在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。认识观察者模式出版者+订阅者=观察者模式如果你了解报纸的订阅是怎么回事,其实就知道观察者模式是怎么回事,只是名称不太一样:出版者改称为“主题”(Subject),订阅者改称为“观察者”(Observer)。松耦合观察者模式提供了一种对象设计,让主题和观察者之间松耦合。为什么呢?关...原创 2018-12-26 16:17:28 · 271 阅读 · 0 评论 -
单例双重校验锁
public class SingleDoubleLock { /*假设没有关键字volatile的情况下,两个线程A、B,都是第一次调用该单例方法,线程A先执行instance = new Instance(),该构造方法是一个非原子操作,编译后生成多条字节码指令,由于JAVA的指令重排序,可能会先执行instance的赋值操作, 该操作实际只是在内存中开辟一片存储对象的区域后直接返回...原创 2019-09-17 18:37:04 · 164 阅读 · 0 评论