
设计模式-自己说
23点59
这个作者很懒,什么都没留下…
展开
-
外观模式
定义:用于在复杂系统的外部增加一个统一的接口,使外部访问不必直接调用系统内的各个子系统,将关系由一对多改为一对一。适用场景:系统分层时,每层的各个子系统由一个统一的层系统来包装起来作为外观感觉:个人感觉这种模式只是提高了外部访问的便捷性,对于性能提高和降低资源占用 于事无补。而且不符合开闭原则,修改起来麻烦。代码:a.doa();b.dob();c.doc();Fac...原创 2019-04-16 14:12:24 · 122 阅读 · 0 评论 -
业务代表模式 businessdelegate pattern
1.定义理解:业务代表模式为业务层和表示层提供了一个统一通信的接口,降低了两个层之间的通信复杂度。有点类似于一种特定场景下的中介模式2.组成:客户端client 业务代表businessdelegate 业务服务businessservices 查询服务lookupservice其中查询服务可以理解为一种把ifelse抽离出来,做成了专门的一种用于为客户端查找指定服务类型的类,应该...原创 2019-06-17 14:05:43 · 341 阅读 · 0 评论 -
策略模式strategy pattern
1、定义:把类的一种行为封装为一组算法,单独从类的结构中剥离出来,从而实现行为在执行时动态改变的模式2、适用场景:一个类多态出很多子类,子类之间的不同仅仅是行为不同,而且行为可能会经常出现新的变化3、组成:contex类、strategy抽象行为类、具体行为类...原创 2019-06-17 14:10:15 · 272 阅读 · 0 评论 -
代理模式
就是被代类和代理类实现了相同的接口,使被代理类被保护起来原创 2019-06-17 15:16:02 · 239 阅读 · 0 评论 -
组合模式
特点:1.对象组是一个list2.对象与对象组之间是通过子集的形式咬合;3.子对象的母类不是接口,而是实体类,违反了依赖倒置原则;4.对象包含了list的操作属性(add remove )5.再举一个例子:某个人的老师6.其他规律:递归、单向传递...原创 2019-06-17 15:17:22 · 136 阅读 · 0 评论 -
命令模式
最大特点:把常用操作(往往要求操作可撤销的)封装成命令,降低请求客户 和 执行对象 的耦合,提高灵活性。原创 2019-06-17 15:18:04 · 91 阅读 · 0 评论 -
状态模式
一句话总结:将对象的状态及跟状态有关的行为封装成单独的对象,以后状态增加、减少或行为改变可以通过直接增加、减少单独的状态类或修改单个状态类中的行为实现,而不必去修改基本类。主要体现开闭原则...原创 2019-06-17 15:18:50 · 115 阅读 · 0 评论 -
空对象模式
把对象为空的所有操作都分离出来单独处理,这样避免在每个需要使用该对象时都要对空值的情况重复处理。主要体现单一职责原则原创 2019-06-17 15:19:26 · 114 阅读 · 0 评论 -
观察者模式observer pattern
1、场景:用于一对多关系中,组成包括被观察者A、观察者、受众BCD。如下图:2、用途:当A变化时,会触发观察者的操作,比如对BCD进行广播通知3、原理:在A的被观察参数变化时(比如重新set),会调用观察者链表上的每一个观察者进行更新操作,而观察者的更新操作会调用BCD的更新操作,从而完成触发操作。4、关键:被观察者要实现两个功能:维护观察者链表、建立触发机制...原创 2019-06-17 15:22:00 · 123 阅读 · 0 评论 -
中介者模式Mediator Pattern
1、目的:为了解决多对多通信关系中的复杂性,降低对象之间的耦合度,引入中介的方式对请求和响应进行统一管理2、组成:用户类、中介类3、特点:每个用户类都调用了中介类,用户和用户直接不直接通信而是调用中介类的方法...原创 2019-06-17 15:22:48 · 238 阅读 · 0 评论 -
组合实体模式Composite Entity pattern理解
1、组成:依赖对象、粗粒度对象、组合实体。其中依赖对象构成粗粒度对象,粗粒度对象构成组合实体。2、用途:当更新组合实体时,粗粒度对象和依赖对象实现自动更新;3、场景:为了实现持久化对象的自动更新,为自动更新提供了一种规范。...原创 2019-06-17 14:05:01 · 215 阅读 · 0 评论 -
数据访问对象模式 (DAO模式)
1、定义理解:有一个对象专门负责数据的访问,把数据的访问从业务中抽离出来,使数据访问与业务逻辑解耦2、组成:DAO接口、DAO实体类、模型对象。模型对象(也就是POJO类)使用DAO实体类来访问数据源,而不是把访问的方法写在业务逻辑里。...原创 2019-06-17 13:11:35 · 710 阅读 · 0 评论 -
前端控制器模式front controller pattern
1、场景:用一个专门的类来接收所有前端(桌面或web端)的请求,本质上是一个servlet2、组成:1.前端控制器类:用来做请求的验证、授权、日志记录以及将请求分配给调度器器;2.调度器(dispatcher)类:将请求分配给具体的业务逻辑处理类;3.视图:模拟请求前端3、应用:springMVC的DispatcherServlet...原创 2019-06-17 13:10:50 · 241 阅读 · 0 评论 -
解释器模式
目录定义的理解:怎么用:构成:何时使用评价代码 定义的理解: 创建一个解释器类,把传进来的固定的参数,按照定义好的规则(一般会出现多重条件判断的场合下使用才比较有必要)来执行判断,并根据判断结果执行相应操作。 怎么用: 构成:何时使用 用来解决频率较高的、多重逻辑判断的、逻辑判断规则简单的 问题判定行为。 一定条件下可以结合命令模...原创 2019-04-27 06:15:45 · 123 阅读 · 0 评论 -
享元模式
目的:有大量相似对象需要new出来时,通过工厂模式实现对象的共享使用,从而降低new对象的数量,减少内存占用。理解:使用工厂模式,把类的实例化转化为根据形参让工厂选择hashMap里的对象,并用对象执行Draw。通过这种形式避免了同一个类因不同属性的值不同而大量低效的占用内存的情况。组成:享元接口、享元具体类、工厂类、DEMO特点:往往和工厂模式联合使用,会用到hashmap;...原创 2019-04-20 00:23:07 · 177 阅读 · 1 评论 -
模板模式
定义:抽象父类定义了一个行为的执行方式或步骤,步骤内的内容由具体的子类来填充,从而实现虽然每一步的内容都不相同但总的行为的执行却都按相同的步骤来完成。组成:(用final关键字)定义的步骤或模板的抽象父类、具体填充内容的子类、使用类特点:final关键字修饰的方法不可以被override...原创 2019-06-17 13:02:36 · 115 阅读 · 0 评论 -
单例模式 singleton pattern
1定义:固定某个类只能有一个实例,类不可在外部被new出来,而是调用类的方法来获得实例2.场景:需要确保某类在任何时刻都只能有一个实例,在任何时刻保持全局唯一变量的情况下使用3.实现:难点是如何在多线程的情况下保证单例模式线程安全性,注意效率、空间占用、线程安全性这3点。先要理解多线程为啥会出现多个实例,我的理解就是类内部在 if instance==null 这步到 ins...原创 2019-06-17 13:04:15 · 151 阅读 · 0 评论 -
抽象工厂模式Abstract Factory Pattern
1、定义:为多个不同作用域工厂建立的工厂,可以理解为为解决多维度接口的选择问题而把多个工厂进行组合应用2、组成:工厂类A、工厂类B、抽象工厂类、工厂生成器类、A对应的抽象类及实体类、B对应的抽象类及实体类3、使用:通过给工厂生成器类传递具体参数来获得具体需要的工厂,然后调用工厂特性...原创 2019-06-17 13:05:28 · 156 阅读 · 0 评论 -
工厂模式 Factory Pattern
1、定义:new类时 是用抽象类或接口,在具体执行类的行为时,再通过给工厂类传递类名称来实例化2、组成:接口或抽象类、具体继承类、工厂类...原创 2019-06-17 13:06:20 · 101 阅读 · 0 评论 -
服务定位器模式service locator pattern
1、定义:是对JNDI功能的优化,通过给要查询的服务建立缓存,来提高JNDI查询性能2、组成:service 、servicelocator、innitialcontext、cache、Client3、关键:主要是对JNDI要深入理解,明白这是根据名称查地址,即根据服务查找在内存中的JNDI对象。...原创 2019-06-17 13:07:10 · 303 阅读 · 0 评论 -
拦截过滤器模式
1、定义:定义一组规则,拦截前端请求并按规则进行过滤,就是对请求进行预处理2、组成:过滤器filter、过滤器链filterchain、过滤管理器filtermanager、请求对象(接受客户端的请求)target、客户端client3、流程:client发送请求,target接受请求并将请求发送到过滤器管理器,过滤管理器负责维护过滤器链,由此完成过滤...原创 2019-06-17 13:08:10 · 134 阅读 · 0 评论 -
过滤器模式
3、组成:1要过滤的链表 要过滤的条件1 要过滤的条件2 …… 且关系 或关系 用例原创 2019-06-17 13:09:45 · 118 阅读 · 0 评论 -
迭代器模式Iterator Pattern
把迭代的思想抽象为一种行为,从集合分离出来,使迭代的使用与集合本身的存储结构解耦例如 java中每个序列类的存储结构,只要调用.iterator方法,都会返回一个Iterator类的对象...原创 2019-06-17 15:23:18 · 199 阅读 · 0 评论