![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
minantadd
做最咸的咸鱼
展开
-
GOF23设计模式之观察者模式
观察者模式(Observer Pattern),用于当一对象发生改变时,能自动通知到其他依赖的对象,类似于监听机制。该模式属于行为型模式。打个现实中的例子,就比如博客主题的订阅功能,当订阅了某主题之后,该主题发布新内容会通知到所有的订阅者账号上,这其实就是一种观察者模式的应用。上面博客主题订阅的例子中,订阅者在观察者模式中就称之为观察者对象,而主题就属于是目标对象。当目标对象做出了修改,它的所有观察者就会得到相应的内容通知。接下来用代码实现一下这个功能。IObserver观察者接口类有个up原创 2020-05-30 00:00:38 · 189 阅读 · 0 评论 -
GOF23设计模式之装饰模式
装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰模式降低了系统的耦合度,可以动态的增加或删除对象的职责,并使得需要装饰的具体构建类和具体装饰类可以独立变化,以便增加新的具体构建类和具体装饰类。优点:扩展性好,不会急剧增加类个数;可以对一个对象进行多次装饰,创造出不同的行为组合;具体构建类和具体装饰类可以独立变化,扩展灵活。缺点:构建的小对象比较多,有一定程度的性能影响;易出错,排原创 2020-05-28 23:50:19 · 207 阅读 · 0 评论 -
GOF23设计模式之责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。也就是将能够处理同一个请求的对象连成一条链,所提交的请求在链上有可传递性,即当前节点处理完可交由下个节点处理。举个例子,一般公司里请假都需要提交请假申请,然后根据请假天数来决定相应的审批流程,这个审批流程就可以看成是一个链条,请假单需要经过这个完整链才算处理完。比如某公司的请假制度是这样的:1、请假天数为三天原创 2020-05-27 15:54:19 · 230 阅读 · 0 评论 -
GOF23设计模式之享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。说简单些就是对现有对象的重用,但这个对象中要区别两部分,一部分称之为内部状态,一部分为外部状态。所谓内部状态就是不会随环境变化的即固定的不变的,可共享的。所谓外部状态就是会变化的,不能共享的。举个简单的例子。比如设计一个围棋软件,一个棋子就是一个对象,要是每个棋子都做为一个单独的对象的话,那下一盘下来就得创建几百个原创 2020-05-26 20:22:19 · 148 阅读 · 0 评论 -
GOF23设计模式之外观模式
外观模式(Facade Pattern)指隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口的设计模式模式。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。其核心就是将复杂业务封装为统一接口,便于其它使用的地方调用。其实外观模式用的很频繁,开发时不经意间可能就用上了。使用它也是为了降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。比如开发之中用常见的MVC原创 2020-05-26 15:19:29 · 153 阅读 · 0 评论 -
GOF23设计模式之适配器模式
适配器模式的目的就是将原来两个不兼容接口的类可以适配在一起工作。举一个现实中的例子,笔记本电脑和投影仪的适配。现在有些笔记本(可能较多,没做统计不细究了)对外只开放USB、TypeC接口了,就对投影仪来说,就需要另外弄个投影转换器,也可称之为适配器哈。下面就拿这样的例子,结合代码,描述一下适配器模式是怎么样的。首先先放出UML图:没几个类,结构比较简单。说明下这几个类和接口是什么:1、ProjectorComputer:相当于只有USB接口的电脑;2、Shadow:相当于USB接口;原创 2020-05-21 16:10:03 · 124 阅读 · 0 评论 -
GOF23设计模式之原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能,它提供了一种创建对象的最佳方式。原型模式单独使用的比较少,较多的是结合工厂模式创建一些复杂的、创建开销比较大的对象,或者是复制一些经过处理、改变初始属性值的对象。原型模式可以有两种实现方式,一是通过实现Cloneable接口,重写clone方法实现;二是通过序列化和反序列化方式实现。一、Clone方式实现:先创建一个原型类:package com.minant.prototype;import jav原创 2020-05-21 01:06:51 · 140 阅读 · 0 评论 -
GOF23设计模式之建造者模式
什么是建造者模式,正如其名,也就是用来建造某个对象的一种设计模式。也不是什么对象都用这个建造者模式,该模式主要用于构建比较复杂的对象,也就是创建起来比较繁琐的对象。比如上篇抽象工厂中所说的高端手机对象,它由好多种基产品构成,包括处理器、屏幕、摄像头等等。换句话说就是一个类中包含许多其他类做为其属性、依赖其他类。在构建这么一个复杂类的时候,如果一个个对象,一层层去单独创建那步骤可想而知是相当繁琐的。所以就有了建造者模式来解决这个繁琐的问题。下面还是以上篇抽象工厂的例子为基础来用建造者模式构建一个高端手机整原创 2020-05-20 01:32:13 · 157 阅读 · 0 评论 -
GOF23设计模式之工厂模式
此篇总结的工厂模式分为三种,分别为:简单工厂(静态工厂)、工厂方法、抽象工厂。下面就由简单到复杂的介绍以上几种工厂模式的实现。一、简单工厂简单工厂模式也叫静态工厂模式,即通过工厂类调用静态方法,根据传参获取指定对象的一种创建对象方式。其不遵从OCP(开闭原则,Open-Closed Principle),但因其简单易用而深受开发者喜爱,因此也是开发中常见的工厂模式。Product作为产品接口,Cup和Toothpaste作为产品类,SimpleFactory为生产产品的工厂,TestSimp原创 2020-05-19 18:14:52 · 242 阅读 · 0 评论 -
GOF23设计模式之单例模式
此篇总结五种单例创建方式,分别是:饿汉、懒汉、双重检查、静态内部类、枚举。及利用反射、反序列化方式破解单例,还有如何去防止反射、反序列化对单例的破坏。直接上代码:一、饿汉单例package com.minant.singleton;/** * @ClassName HungrySingle * @Description TODO 饿汉单例模式(即时加载,效率高、线程安全、适用频繁调用的单例) * @Author MinAnt * @Date 2020/5/18 * @Versio原创 2020-05-18 20:17:45 · 158 阅读 · 0 评论 -
SSH2-Java远程调用Linux中的shell脚本执行时不能获取到JDK环境问题解决!
遇到了这么一个需求,要求远程通过Java调用服务器上的sh脚本。首先通过SSH获取连接,再通过传入合法的命令调用执行。在此就碰到了个坑,执行一些简单的命令脚本没有问题,当涉及到其他应用服务需要用到JDK环境才能执行的命令时,便会报找不到JRE或是请用JDK *** (版本)运行的错误提示。检查之后发现,明明在/etc/profile中配置过环境变量了,java -version 一点毛病也没有的怀...原创 2019-12-16 21:01:35 · 1093 阅读 · 0 评论