设计模式
ljt-tiger
不积跬步,无以至千里。知识认知体系搭建过程:场景 --》需求 --》解决方案 --》应用 --》原理
展开
-
几种单例模式
几种单例模式枚举可以天然防止反射和反序列化漏洞 需要延时加载时:枚举好于饿汉式 ,不需要延时加载:静态内部类好于懒汉式 也就是说优先选用 枚举和静态内部类饿汉/** * 饿汉式单例设计模式 * 特点:线程安全、调用效率高、资源利用率低(无懒加载)。 * * @author tiger * @Date 2017年9月2日 */public class SingletonHungry { // 私有构造函数 private SingletonHungry() { }原创 2021-06-14 23:47:24 · 85 阅读 · 1 评论 -
代理之-静态代理
抽象主题角色(Subject) 声明真实主题角色与抽象主题角色的公共接口方法,可以是接口或抽象类 真实主题角色(RealSubject) 被代理类,定义代理类所表示的真实对象,执行系统真正的业务逻辑 代理主题角色(Proxy) 代理类,内部持有RealSubject的引用,具备完全对RealSubject的代理权,客户端调用代理对象的方法,同时也调用被代理对象的方法,但会在代理对象前后加一层处理逻辑 Subject.javapackage proxy.gener..原创 2020-09-06 10:22:52 · 110 阅读 · 0 评论 -
工厂模式反射创建类
package com.tiger.simplefactory;public class CreateFactory { public Object getInstance(Class<? extends Object> clazz){ try { if (null != clazz) { ret...原创 2020-01-23 00:19:30 · 169 阅读 · 0 评论 -
设计模式 -- 享元模式
1、使用场景:内存属于稀缺资源,不能随意浪费,如果有多个完全相同或相似的对象,我们可以通过享元模式来节省内存。 1)、线程池、数据库连接池 2)、String类的设计,""-字符串池。2、核心:以共享的方式高效地支持大量细粒度对象的重用。3、关键细节 --> 区分内部状态和外部状态: 1)、内部状态:可以共享,不会随环境变化而变化。 2)、外部状态:不可以共原创 2018-03-07 13:44:38 · 133 阅读 · 0 评论 -
观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。摘自搜狗百科 《观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限原创 2017-07-10 08:55:24 · 209 阅读 · 0 评论 -
动态代理
在静态代理的基础上演化而来,只是动态代理不需要自己编写代理类,由jdk自带的工具类动态产生(中间利用了反射技术)原创 2017-09-03 17:10:36 · 204 阅读 · 0 评论 -
简单工厂
实现代码如下:package com.tiger.factory;/** * 工厂方法 Food类 * @author tiger * */public interface Food { //显示食物细节消息 public String detial();}package com.tiger.factory;/** * *原创 2017-07-04 19:16:02 · 222 阅读 · 0 评论 -
策略模式
策略模式包含三种对象:1、环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。2、抽象策略对象:它可由接口或抽象类来实现。3、具体策略对象:它封装了实现同不功能的不同算法。实现代码如下:package com.tiger.strategy;/** * 旅游策 略接口 * @author tiger * */public interface原创 2017-07-06 08:42:07 · 235 阅读 · 0 评论 -
静态代理模式
1、对静态代理的理解:定义一个接口,真实角色和代理角色都实现统一接口,客户只和接口打交道[客户直接与代理角色打交道,真实角色对于客户来说是被代理角色隔离起来的,代理角色持有真实角色的引用,代理角色协助真实角色进行前置处理和后置处理,中间的核心业务调用真实角色来完成。使得真实角色处理的核心业务更加存粹,不再去关注一些公共的事情,公共业务由代理来完成,实现了业务的分工,公共业务发生改变时变得更加集中和原创 2017-09-03 15:07:07 · 207 阅读 · 0 评论 -
使用反射以及泛型技术相结合实现简单工厂模式
接口可以随意更改替换成别的接口,也可以在其他包引入,(测试例子中的接口是Human),但只满足接口中定义的方法没有参数的情况下。转载 2017-09-04 19:19:25 · 655 阅读 · 0 评论 -
桥接模式
1、使用桥接模式,将多个维度分开管理,减去多层继承的繁琐,客户端可以直接采用自由组合方式选择调用,多个维度的变化互不影响。 对比未使用桥接模式,电脑接口中直接管理两个职责(品牌[联想、戴尔、华硕]、种类[台式、笔记本、平板]),背离SRP设计原则2、代码演示如下:package com.tiger.bridge;/** * 管理品牌维度[联想、戴尔、华硕、...] *原创 2017-09-04 08:22:27 · 203 阅读 · 0 评论