Java设计模式
文章平均质量分 85
以案例方式说明各种设计模式
专注写bug
你知道的越多,你不知道的也越多!
展开
-
结构型模式——装饰者模式
文章目录项目分析装饰者模式结构案例定义抽象构件角色定义具体构件角色定义抽象装饰类定义具体装饰角色类测试类编写代码git下载项目分析假设此时有一个外卖店的例子。外卖店有炒面、炒饭等主食。且每项主食都能具有添加培根、鸡蛋等副食项。每种副食项具有不同的价位。此时,需要实现根据顾客点餐的各种选项,计算出商品总共的费用。如果考虑使用继承来设计每种主食和副食的搭配,则会出现很多头疼的问题。1、如果此时需要增加一个别的主食项,比如:炒粉则需要额外定义一个炒粉类,实现FastDood,然后炒粉类也具原创 2021-12-20 17:52:43 · 603 阅读 · 0 评论 -
结构型模式——适配器模式(Adapter)
文章目录什么是适配器模式适配器模式的结构什么是适配器模式将一个类的接口,转化成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作适配器模式通常分为以下几类:类适配器模式。对象适配器模式。但类适配器模式通常类之间的耦合度 高于 对象适配器模式。类适配器模式采取继承的方式。且要求开发者对现有组件库中的相关组件的内部结构有一定的了解。对象适配器模式采取聚合或组合的方式。适配器模式的结构适配器模式(Adapter)通常包含以下几种原创 2021-12-06 19:33:16 · 720 阅读 · 1 评论 -
结构型模式——代理模式之CGLib动态代理
文章目录往期回顾CGLib 简介CGLib 使用引入依赖代码编写代码下载往期回顾在之前几篇博客中,重点说明了静态代理模式和JDK方式的动态代理模式。静态代理模式JDK动态代理模式在这两种代理模式中,都需要保证其代理模式结构信息,比如在使用JDK动态代理模式时,需要在Proxy.newProxyInstance指定抽象主题接口,如下所示:但在实际应用中,如果未指定 抽象主题接口,则无法再继续使用上述的静态代理模式和JDK抽象代理模式。如果依旧还想继续使用动态代理,则需要使用到另外一种方式—原创 2021-11-24 16:46:04 · 359 阅读 · 0 评论 -
结构型模式——代理模式之JDK方式的动态代理
文章目录前言代理模式的结构JDK 动态代理1、定义抽象主题类2、定义具体主题实现类3、编写代理类工厂,用于生成动态代理对象4、编写消费者前言在上一篇博客中,重点说明了代理模式的概念、结构和案例等。链接地址:结构型模式——代理模式之静态代理代理模式的结构代理模式中,分为以下三种角色:抽象主题类(Subject):定义规范!通过接口或者抽象类声明真实主题和代理对象实现的业务方法。真实主题类(Real Subject):实现抽象主题中的具体业务,是代理对象所代表的真实对象,即最终原创 2021-11-24 12:15:25 · 496 阅读 · 0 评论 -
结构型模式——代理模式之静态代理
文章目录什么是代理模式代理模式的种类代理模式的结构静态代理1、创建抽象主题类2、创建具体主题类3、创建代理类对象4、创建消费者类小结代码下载地址什么是代理模式给某个对象提供一个代理,以控制对该对象的访问。访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的种类在Java中,代理模式一般分为以下几种类型:静态代理、动态代理。静态代理:编译期生成。动态代理:Java运行时动态生成。一般有JDK代理和CGLib代理两类。代理模式的结构代理模式中,分原创 2021-11-22 18:15:54 · 285 阅读 · 0 评论 -
创建者模式——建造者模式(Builder)
文章目录原创 2021-11-17 17:34:05 · 595 阅读 · 0 评论 -
创建者模式——原型模式(克隆)
文章目录什么是原型模式原型模式结构原型模式的克隆种类案例什么是原型模式原型模式就是:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的对象。原型模式结构原型模式的结构包含以下几类:抽象原型类:规定具体原型对象必须实现的clone()方法具体原型类:实现抽象原型类的clone()方法访问类(测试类):使用具体原型类中的clone()方法,用于复制新的对象原型模式的克隆种类原型模式的克隆,分为深克隆和浅克隆两种类型。浅克隆:创建一个新对象,新对象的属性原创 2021-11-16 16:37:06 · 647 阅读 · 0 评论 -
简单工厂模式——配置文件解耦合
文章目录前言案例创建抽象类和子类创建配置文件编写工厂类编写测试类执行效果案例结构案例下载前言工厂模式 博客中,针对简单工厂模式,为了降低工厂和咖啡店之间的耦合度,采取的是Java多态的思想实现。本篇博客采取配置文件的方式实现解耦合的操作。案例编写电脑抽象类和电脑的子类(华为电脑、小米电脑),采取配置文件bean.properties中定义子类的全路径方式,在Java代码中测试时使用反射将其进行加载的思想,完成工厂类的解耦合操作。创建抽象类和子类package factory.config;原创 2021-11-09 18:01:30 · 543 阅读 · 0 评论 -
创建者模式——抽象工厂模式
文章目录前言前言在上一篇博客(工厂模式)中,重点说明了怎么去使用工厂模式进行业务逻辑上的解耦合。但博客中只说到了一种产品的工厂设计模式,正常来说一个咖啡店不仅仅只有咖啡这一种选项。如果产品种类过多,则需要创建更多类型产品的父类,以及产品子类的实现等。创建的类太多,不利于一个项目代码的维护和解读。---- 类爆炸...原创 2021-11-09 17:13:44 · 170 阅读 · 0 评论 -
创建者模式——工厂模式
文章目录前言简单实现简单工厂类工厂方法前言工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。简单实现案例:咖啡店有两种类型的咖啡,美式咖啡和拿铁咖啡,你需要去咖啡店点咖啡。假设,每种咖啡都需要添加牛奶和糖。提取其中的共同点和不同点,发现:每种咖啡的共同点:加糖、加牛奶。不同点:咖啡的种类。由此,可以定义一个公共的Coffee.java类,分别记录其中的异同点。如下所示:package原创 2021-11-04 17:43:41 · 228 阅读 · 1 评论 -
创建者模式——单例模式
文章目录什么是单例单例用在哪单例模式类型懒汉式案例饿汉式案例静态内部类实现反射破坏单例模式什么是单例单例模式也就是单实例的含义,其必须保证的核心点为:保证一个类只有一个实例化对象,并且提供一个全局访问点。单例用在哪在Java生涯中,单例模式往往是最常见的设计模式,比如Spring框架中的bean,默认就是单实例。单例模式类型单例模式往往分为以下几种类型:饿汉式:类加载的初始化阶段,对指定的类进行实例化操作。本质上就是借助于jvm类加载机制,保证实例的唯一性(初始化过程只会执行原创 2021-11-02 19:56:52 · 216 阅读 · 1 评论