GOF23(Java设计模式)
jy02268879
这个作者很懒,什么都没留下…
展开
-
【一】Java设计模式GOF23之单例模式:饿汉模式、懒汉模式、静态内部类模式、双重同步锁单例模式、枚举单例代码
单例简介: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 UML图 常见应用场景: 1.全局计数器采用单例模式,不然不好同步。 2.应用程序的日志应用,共享日志文件一直处于打开状态,所以只能有一个实例去操作,否则内容不好追加。 3.数据库连接池的设计也用单例,否则浪费资源。 4.spring中的bean默认都是单例。 5.servlet是单例。 6.sprin...原创 2018-08-13 14:37:32 · 321 阅读 · 0 评论 -
【十一】Java设计模式GOF23之责任链模式
简介 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 javax.servlet.Filter就是用的责任链...原创 2019-01-16 17:55:36 · 285 阅读 · 0 评论 -
【二十一】Java多线程J.U.C之AQS框架源码导读(总结、干货)(模板模式template pattern)
一、AQS的模板模式解读 AbstractQueuedSynchronizer该类使用的设计模式是模板模式template pattern。 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 在AbstractQueuedSynchroniz...原创 2019-01-15 16:32:07 · 433 阅读 · 0 评论 -
【十四】Java设计模式GOF23之迭代器模式
简介 迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 它提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 迭代器模式的结构 1.抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接...原创 2019-01-17 17:35:00 · 237 阅读 · 0 评论 -
【十三】Java设计模式GOF23之命令模式(例子ThreadPoolExecutor类)
一、简介 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 JDK的java.util.concurrent包的ThreadPoolExecutor类就用到命令模式。 二、简易命令模式组成 1.Command(抽象命令类): ...原创 2019-01-17 16:28:03 · 484 阅读 · 0 评论 -
【十】Java设计模式GOF23之适配器模式(类方式实现、对象方式实现)
目录 Target.java package com.bjsxt.adapter; /** * @author liyijie * @date 2016年8月12日下午4:13:21 * @email 37024760@qq.com * @remark * @version */ public interface Target { void handleReq(); ...原创 2018-11-03 21:08:14 · 239 阅读 · 0 评论 -
【零】Java设计模式GOF23之总结
设计模式主要有3个大分类 创建型模式:用来建造对象 一、单例模式: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 常见应用场景: 1.全局计数器采用单例模式,不然不好同步。 2.应用程序的日志应用,共享日志文件一直处于打开状态,所以只能有一个实例去操作,否则内容不好追加。 3.数据库连接池的设计也用单例,否则浪费资源。 4.spring中的bean默认都是单例。 ...原创 2018-08-14 00:51:36 · 481 阅读 · 0 评论 -
【九】Java设计模式GOF23之观察者模式
1.自己定义 目录 Observer.java public interface Observer { void update(Subject s); } ObserverA.java public class ObserverA implements Observer{ //跟目标对象的state值保持一致 private int myState; @Overr...原创 2018-08-14 00:50:39 · 170 阅读 · 0 评论 -
【八】Java设计模式GOF23之动态代理(JDK和CGLIB)
一、使用JDK原生动态代理 基于Java反射机制。 Java动态代理是基于接口的,如果对象没有实现接口则选择用CGLIB方式实现动态代理。 实现步骤: 1.首先实现一个InvocationHandler,方法调用会被转发到该类的invoke()方法。 2.然后在需要使用真实对象的时候,通过JDK动态代理获取代理对象。 目录 接口:SayHello.java package...原创 2018-08-13 23:55:51 · 281 阅读 · 0 评论 -
【七】Java设计模式GOF23之静态代理
目录 Star.java public interface Star { void confer();//谈协议 void signContract();//签合同 void bookTicket();//订票 void sing();//唱歌 void collectMoney();//收尾款 } ProxyStar.java public class ProxySta...原创 2018-08-13 23:28:34 · 162 阅读 · 0 评论 -
【六】Java设计模式GOF23之原型模式
目录 一、浅复制 Sheep.java import java.io.Serializable; import java.util.Date; /** * 浅复制 */ public class Sheep implements Cloneable,Serializable{ private String sname; private Date birthday; @Ove...原创 2018-08-13 23:07:52 · 190 阅读 · 0 评论 -
【五】Java设计模式GOF23之建造者模式
目录 AirShip.java public class AirShip { private OrbittalModule orbitalModule;//轨道舱 private Engine engine;//发动机 private EscapeTower escapeTower; //逃逸塔 public void launch(){ System.out.print...原创 2018-08-13 22:09:53 · 425 阅读 · 0 评论 -
【四】Java设计模式GOF23之抽象工厂模式
目录 CarFactory.java public interface CarFactory { Engine createEngine(); Seat createSeat(); Tyre createTyre(); } LowCarFactory.java public class LowCarFactory implements CarFactory{ @Over...原创 2018-08-13 21:15:42 · 633 阅读 · 0 评论 -
【三】Java设计模式GOF23之工厂方法模式
目录 CarFactory.java public interface CarFactory { Car createCar(); } AudiFactory.java public class AudiFactory implements CarFactory { @Override public Car createCar() { return new Audi(...原创 2018-08-13 20:53:57 · 177 阅读 · 0 评论 -
【二】Java设计模式GOF23之简单工厂模式(静态工厂模式)(示例Executors类源码)
静态工厂简介 选择实现类、创建对象统一管理和控制。 实现了创建者和调用者的分离。 用工厂方法代替new操作。 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已有代码) 常见应用场景: 1.JDK中java.util.concurrent包中的Executors类,就是一个静态工厂,用来创建各种线程池。代码示例用这个案例 类图 Executors是一个静态工厂类...原创 2018-08-13 20:32:04 · 309 阅读 · 0 评论 -
【十二】Java设计模式GOF23之策略模式(ThreadPoolExecutor类的拒绝策略源码)
简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 策略模式的角色和职责 1.Strategy:策略(算法)抽象 2.ConcreteStrategy:各种策略(算法...原创 2019-01-16 18:53:22 · 432 阅读 · 0 评论