设计模式
朝闻道_
这个作者很懒,什么都没留下…
展开
-
生产者/消费者模式
https://www.cnblogs.com/fgcs/p/4772655.html转载 2018-01-15 11:23:34 · 212 阅读 · 0 评论 -
设计模式概览
创建模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。结构模式:这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。行为模式:这些设计模式特别关注对象之间的通信。J2EE模式:这些设计模式特别关注表示层。这些模式是由 Sun Java Center...原创 2018-02-17 18:25:54 · 125 阅读 · 0 评论 -
原型模式 Prototype Pattern
实现 Cloneable接口,重写clone方法,根据情况对对象进行浅拷贝或者深拷贝。public class Product implements Cloneable{ private String id; private String name; private Name ageName; public Name getAgeName() { return ageName;...原创 2018-02-17 18:49:27 · 145 阅读 · 0 评论 -
门面模式 Facade Pattern
门面模式,即把各种类型的实例放在一个对象当中,实现对象中包含的所有方法,可以按不同的业务需求进行使用和变化,所有的访问都走门面类进行访问,这个在比如交易类或者查询类业务中比较常见。以下是类图门面类不参与子系统内部逻辑,一个子系统可以有多个门面,...原创 2018-02-17 19:53:18 · 151 阅读 · 0 评论 -
组合模式 Composite Pattern
组合模式即采用集合存储本身应用作为分支,树形结构,保持部分与整体的层次模式。示例代码:public class Employee { String name; String dept; double salary; List<Employee> list = new ArrayList<>(); void add(Employee e){ list.add...原创 2018-02-18 11:16:23 · 185 阅读 · 0 评论 -
桥梁模式 Bridge Pattern
桥接模式,将实现类和接口类拆分开来,不使用继承,接口类(抽象类) 持有一个桥接类的引用,根据传入的桥接实现类引用。这样在改变桥接类的情况下就可以改变抽象类的运行结果。名词类:抽象部分:public abstract class Circle { protected Draw draw; protected Circle(Draw draw){ this.draw = draw; ...原创 2018-02-18 12:28:35 · 195 阅读 · 0 评论 -
备忘录模式 Memento Pattern
用于存储状态,及状态恢复,分别分为三个角色,原始类,存档类,存档管理类(作为容器,存储相应的存档点)以上备忘录模式有些类似于回滚交易中的log日志记录,可以通过相应的数据进行回滚(状态恢复)。原始类:public class Originator { private String state; public Originator(String state) { super(); th...原创 2018-02-18 18:47:44 · 132 阅读 · 0 评论 -
观察者模式 Observer Pattern
观察者模式是指,当一个类状态发生变化时,会通知所有的观察者类,主要用于有数据变化或者是状态变化的场景下,比如listerner监听器,一般采用异步的方式。观察类接口:public interface Observer { void update(String name); }观察者实现:public class ConsoleObserver implements Observer{ @Ov...原创 2018-02-18 22:49:33 · 134 阅读 · 0 评论 -
设计模式文字解释
创建型模式:关注对象的创建过程 1、单例模式:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点主要:饿汉式(线程安全,调用效率高,但是不能延时加载)懒汉式(线程安全,调用效率不高,但是可以延时加载)其他:双重检测锁式(由于JVM底层内部模型原因,偶尔会出问题。不建议使用)静态内部类式(线程安全,调用效率高。但是可以延时加载)枚举单例(线程安全,调用效率高,不能延时加载)2、工厂模式:...转载 2018-02-24 16:16:43 · 204 阅读 · 0 评论 -
亨元模式基本应用 FlyWeight Pattern
亨元模式即轻量级的元素创建模式,通过hashMap存储相应的对象,直接取出使用。不需要重复创建相同的对象。这个例子在单例模式中的容器模式即有演示.主要应用于缓存的状况,示例中描述的JVMCacheUtil缓存即是如此。此时可以用多线程安全的 ConcurrentHashMap来进行存储。亨元模式的典型代表是 Integer 和 StringInteger.valueOf(a) 中,数值 a在 ...原创 2018-02-17 15:48:47 · 181 阅读 · 0 评论 -
装饰模式基本应用 Decorate Pattern
装饰模式,实际上就是采用java的组合特性,将原引用放入装饰类中,然后调用其相关方法,对方法前后进行装饰扩展类图如下:InputStream 和 OutputStream子类的实现就引用了以上的方法...原创 2018-02-17 15:42:26 · 257 阅读 · 0 评论 -
Java设计模式(第二版)
1. 工厂模式解决取得不同的实现类问题2. 动态代理模式,解决RPC不暴露实现类问题3. 单例模式,解决内存占用的问题,比如对于工具类、常量类加载一次即可第1章 绪论第1部分 接口型模式第2章 接口型模式介绍第3章 适配器(Adapter)模式第4章 外观(Facade)模式第5章 合成(Composite)模式第6章 桥接(Bridge)模式第2部分 职责型模式第7章 职责型模式介绍第8章 单例...原创 2018-01-03 09:42:29 · 935 阅读 · 0 评论 -
建造模式的场景实现
模式的使用是为了实现某种场景上的需要,在前面的建造模式里所演示的with实现方法就非常好的诠释了建造模式那以下的实现就是一个良好的应用:场景:图书馆需要记录不同的书籍,每种书籍都有不同的类型,平常来的大多数是小说,那么我们在创建一个对象的时候就可以默认书籍类型为小说类型,根据实际的情况看是否对书籍进行类别记录:代码实现:package com.family.admin.build; enum B...原创 2018-02-14 14:39:20 · 212 阅读 · 0 评论 -
建造器基本模式Build Pattern
建造者模式 build pattern 也叫做生成器模式。将一个复杂对象分解,可以构建不同内置部分的对象UML图:建造者模式的核心是 builder,builder根据需求进行结构顺序的重新组成或者构造,然后一个builder返回一个对应符合需求的产品,这个与工厂模式的区别在于,工厂模式是整体进行制造,而builder主要是通过改变其内部组成。director导演类用来封装builder,使其细节...原创 2018-02-13 10:41:22 · 644 阅读 · 0 评论 -
策略模式基本应用Strategy Pattern
策略模式,我的理解就是利用java多态的特性,隐藏其实现类,通过调用其接口,来调用相应的实现类,这个和RSF调用中指定相应的impl,有些相似。标准的解释,替换某个算法的具体细节,而不需要完全重写代码。甚至可以在运行时进行替换,和依赖一同使用。如果依赖注入的接口有多个实现类,比如service 有多个实现,那这样可以指定对应的实现,通过 @Resource或者 @Autowire指定实现类的方式如...原创 2018-02-16 13:10:15 · 174 阅读 · 0 评论 -
模板模式基本应用Template Pattern
模板模式即抽取类的共性方法在超类中。定义:将一个算法的部分步骤或所有步骤推出或委托到一个子类。可以以抽象类的方式来编写,一部分公共方法,一部分抽象方法,继承的类实现部分抽象方法,共用公共方法。另一种可以留接口来在需要的时候来实现,匿名内部类的方式,或者是说回调函数。类方法(入参为未实现的接口):public class Stack { public boolean filter(Templa...原创 2018-02-16 18:04:29 · 220 阅读 · 0 评论 -
代理模式基本应用 Proxy Pattern
代理模式,是一个令人爆炸的模式,简单的说就是用一个代理类来实现其相应的功能,并且还可以在实现这些功能的前后做点什么事情,常见的几种情况:(1) 基本演示,将引用注入到代理类中,让代理类进行相应的方法处理(2) SpringAOP中的在运行时进行织入,利用class文件进行反射调用相应的方法(3) AspectJ的AOP实现(4) JAVA所提供的代理类实现(5) cglib所提供的代理类实现1. ...原创 2018-02-13 21:11:50 · 182 阅读 · 0 评论 -
单例模式在实践中的应用 Singleton Pattern
1. 编写工具类将构造方法声明为私有,并且可以抛出错误防止反射/** * 日期工具类 * @author chaowendao */ public class DateUtil { /** * 私有构造方法并且防止反射 */ private DateUtil() { throw new Error("防止反射"); } /** * 获得当前系统时间 * @r...原创 2018-02-12 15:35:13 · 200 阅读 · 0 评论 -
枚举工厂的实现
工厂方法模式(Factory Method Patter)是"创建对象的接口",让子类决定实例化哪一个类,并使一个类的实例化延迟到其子类.工厂方法模式在我们的开发工作中,经常会用到.下面以汽车制造为例,看看一般的工厂方法模式是如何实现的,代码如下: 1 public class Client { 2 public static void main(String[] args) { 3 ...转载 2018-03-24 16:47:42 · 456 阅读 · 0 评论