
设计模式
wabinog
中国民航信息网络股份【2008 - 2014】
国家信息技术安全研究中心【2014 - Now】
从业民航信息化、信息安全领域,核心程序员,擅长大数据、JAVA后端、多线程高并发、JVM调优、网络编程、REDIS、ORACLE......持PMP 、NPDP证书。
展开
-
JAVA Proxy代理模式
代理模式给目标对象提供一个代理对象,通过代理访问目标对象,以控制访问者对目标对象的访问。好处是将访问者和目标类隔离,保护了目标类对象、扩展了目标类的功能。分类静态代理:在程序运行前,class文件就已经被创建了,代理类和目标类的关系在运行前就确定了。动态代理:在程序运行时,使用JVM反射等机制动态生成的代理类,代理类和目标类的关系在运行时确定。动态代理实现方案:JDK动态代理、ASM代理【Spring AOP代理】、CGlib代理。使用场景Spring AOP。【Bean工厂+灵活装配+原创 2020-07-30 13:44:54 · 202 阅读 · 0 评论 -
JAVA Observer观察者模式
观察者模式一种消息通知的模式,采用一对多的依赖关系,让一个消息源被多个观察者同时监听。当消息源发出消息时,会通知所有观察者,使他们能够执行各自的处理方法。主要解决一个对象状态改变时 给其他对象通知的问题,且要考虑到易用和低耦合。构建过程消息源(Subject)聚合持有:观察者对象的集合。实现:观察者的注册方法(加入列表);实现:通知观察者的方法;观察者抽象类(Observer)聚合持有:消息源对象(Subject);实现:观察者处理方法。具体观察者(ConcreteObser原创 2020-07-27 10:28:45 · 129 阅读 · 0 评论 -
JAVA Bridge桥接模式
桥接模式一个复杂类中可能包括了多个维度的属性行为,桥接模式在逻辑上可以将这些维度进行分离,分离为抽象部分(接口)和实现(抽象类)部分。1.通过分离抽象部分和实现部分可使原本复杂的类各部分间解耦合,且更符合“单一职责原则”。2.抽象部分和实现部分这两个部分,可以独立地变化、独立扩展,通过自由组合产生新的类。这种通过(聚合和关联关系)产生类的方式较传统通过继承产生新类的方式,扩展性更好,减少了系统中类,防止类爆炸问题。构建过程确定要设计的复杂类的维度。由抽象部分(Interface)和实现部分(Abst原创 2020-07-21 16:05:15 · 169 阅读 · 0 评论 -
JAVA Adaptor适配器模式
适配器模式适配器又叫包装器,把一个类的接口通过适配器转换成所期望的另外一种接口,使原本接口不同而无法一起工作的两个类能够一起工作。特点适配器模式可分为类适配器和对象适配器。类适配器:通过继承创建的适配器。对象适配器:通过组合创建的适配器。类适配器由于采用继承,因此 耦合度要高 与对象适配器。构建过程明确被适配的Adaptee类、适配的目标类接口Target(注意是目标类的接口!不是目标类!)定义适配器接口Adapter类。Adapter类通过组合或继承方式实现适配Adaptee的逻原创 2020-07-20 11:37:00 · 311 阅读 · 0 评论 -
设计模式原则
指导思想1. 可维护性(Maintainability)修改功能时,改动的地方越少,改动越简单(越不伤筋动骨),可维护性越好。2. 可复用性(Resuability)代码可以被重复使用;实现通用的类库。3. 可扩展性(Extensibility/Scalability)添加功能无需修改原来代码(使用多态、基于抽象类和接口编程)。4. 灵活性(Flexibility/Mobility/Adaptability)代码接口可以灵活调用。设计原则1. 单一职责原则(Single Responsi原创 2020-07-20 00:39:40 · 137 阅读 · 0 评论 -
JAVA Decorator装饰器模式
装饰器模式装饰器模式可动态的将新的责任功能附加到原来类的对象上,其扩展性比继承更具有弹性。在某些场景下,父类可能会派生出数量众多的子类,为防止“类爆炸”。可采用装饰器模式。特点装饰类采用抽象类,使其可后续派生出多种具体装饰类。通过聚合,持有被装饰类的对象,即包装了被装饰类的对象。装饰类通过继承被包装类的基类(或实现其接口),保证了其 行为方法与被包装类一致。构建过程从包装类ConcreteConponent中抽象出共同基类(抽象类Component)。装饰器Decorator,继承抽原创 2020-07-14 11:50:41 · 236 阅读 · 0 评论 -
JAVA Builder建造者模式
建造者模式建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,用于解决”复杂对象的创建”工作。使用多个简单的方法一步步构建出复杂的对象,提供了一种创建复杂对象的最佳方式,一般可采用链式编程实现建造者模式。构建过程从被创建类中抽象出AbstractBuilder基类(抽象类或接口)。创建建造类ConcreteBuilder实现AbstractBuilder基类的抽象方法。使用建造类ConcreteBuilder建造复杂对象,建造过程中尽量采用链式编程。使用原创 2020-07-13 17:16:00 · 176 阅读 · 0 评论 -
JAVA Composite组合模式
组合模式在设计中,如果一个类在逻辑上可由其他几个类组成,那么可使用组合模式描述这些类整体与部分的关系。组合类 主要通过聚合 其组成部分类 的接口,实现灵活组合。应用的场景包括,文件系统树结构,其构成逻辑是一个由文件和文件夹组成,文件夹由可以由文件和文件夹组合而成。构建过程从多个原子类X,Y,Z中抽象出共同类(父类或接口类)。定义聚合物类Composite,Composite聚合了X、Y、Z原子类的接口。聚合物类Composite,通过Add和Delete方法,向类中的<接口类型>列表原创 2020-07-13 01:48:37 · 500 阅读 · 0 评论 -
JAVA Chain of Responsibility责任链模式
责任链模式责任链,将功能的实现抽象成一条流水线(执行链),流水线上有多个节点,每个节点都有特定的职责,按特定的工序执行处理。如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕。构建过程将责任进行分类,抽象出责任接口。根据责任接口实现多个责任类。每个责任类可通过Set方法更新处理过的对象。责任类可定义enable变量,实现责任是否启用。定义责任链类。责任链实现add方法将单个责任添加到链中(可通过链表)。add方法可使用Builder模式,这样实现链式添加原创 2020-07-08 16:46:34 · 194 阅读 · 0 评论 -
JAVA Strategy策略模式
策略模式当使一项功能要使用多种算法(可抽象成同类的算法)进行计算时,可利用多态,通过共同的接口动态地选择不同策略算法。可以避免业务中使用不同策略算法时,写成多个If…else…。适合结合责任链模式使用。构建过程抽象接口。将不同的处理策略算法,抽象出共性(输入、输出等),定义到相同的接口方法中。实现多种策略类。基于共同的接口,根据需求定义并实现多种策略类。使用策略。当要使用某策略时(例如策略X),定义接口引用,指向策略X类实例化对象。进行计算的业务方法中只需通过接口传递对应的策略X原创 2020-07-08 10:47:26 · 240 阅读 · 0 评论 -
Java Singleton单例模式六种实用写法
背景以下列举Singleton模式的5种常见写法,并简要说明。分别是:饿汉式、懒汉式、基本线程安全式、volatile线程安全式、枚举式。饿汉式二话不说上来就实例化。在线程没出现前就已经实例化了,因此饿汉式是线程安全的。只不过上来就实例化会多消耗一丢丢时间。public class Singleton_1 { public int id = 0; public String name = "Singleton_1"; public static Singlet原创 2020-06-28 15:08:30 · 640 阅读 · 0 评论