设计模式
光仔December
技术宅,系统集成项目管理工程师,FCP-报表开发工程师,全国软件开发(C/C++)专业人才高级认证,2014年ACM-ICPC河南省赛区银奖,2014年第五届蓝桥杯河南赛区C/C++程序设计本科B组二等奖,2015年甲骨文杯全国Java程序设计大赛华中赛区A组二等奖,2015年中国大学生计算机设计大赛团队三等奖
展开
-
【设计模式】Iterator设计作业-设计LinkedList的iterator
完成了上次迭代器设计的作业:http://blog.csdn.net/acmman/article/details/43920153LinkedList也需要写一个iterator方法,返回一个实现了Iterator的对象。该如何写?LinkedList.java:package cn.edu.hpu.iterator;public class LinkedList imple原创 2015-02-24 09:34:47 · 1330 阅读 · 0 评论 -
【设计模式】动态代理Proxy_01
大家都知道设计模式中一个比较难理解的模式--动态代理模式,下面我们来通过一步一步完善一个工程来学习动态代理。首先我们创建一个JavaProject,名字为"ProxyTest"。创建一个类Tank.java,是一个坦克类,然后我们创建一个接口Moveable.javaMoveable.java:package cn.edu.hpu.proxy;public in原创 2015-07-10 11:01:13 · 1263 阅读 · 0 评论 -
【设计模式】动态代理Proxy_03
我们继续上一篇总结。我们把TankTimeProxy的类Load进内存之后我们要生成它的一个对象。我们先来回顾一下我们之前写好的Proxy类:package cn.edu.hpu.ProxyTest;import java.io.File;import java.io.FileWriter;import java.lang.reflect.Constructor;import原创 2015-07-10 11:15:41 · 915 阅读 · 0 评论 -
【设计模式】动态代理Proxy_02
我们继续上一次的动态代理探讨。上一篇我们说道,所以我们要实现一种"通用"代理,可以对任意对象代理。那么怎么实现呢?我们规定产生代理的时候,被代理的类一定要实现一个接口。这样我们可以根据接口来生成代理对象,而不是根据具体的类。我们明确一下我们的目标:我们可以对任何的对象,任何的类(前提是这个类实现了某个接口),我们就可以给它生成一个代理。我们怎么样给它生成这个代理原创 2015-07-10 11:04:51 · 1001 阅读 · 0 评论 -
【动态代理】动态代理Proxy_04
我们继续上一篇总结。上篇我们说到,怎么让before()和after()中的内容也让客户灵活指定?不管怎么样,我们现在需要一个这样的东西:可以动态指定对方法进行处理的指令。我们创建一个方法调用的处理器,用来对任意方法进行自定义的处理:package cn.edu.hpu.proxy;import java.lang.reflect.Method;//方法调用的处原创 2015-07-10 11:22:01 · 1215 阅读 · 0 评论 -
【设计模式】策略模式Strategy_03
接着上一篇总结继续探讨。我们之前用自己的方式来实现了JDK的Comparable和Comparator接口,我们下面来看看实际当中JDK给我们的Comparable和Comparator接口。我们对之前的Dog和Dog的比较类DogWeightComparator的实现进行修改:Dog.java:package cn.edu.hpu.Strategy;public clas原创 2015-06-25 11:44:08 · 1087 阅读 · 0 评论 -
【设计模式】策略模式Strategy_02
接着上一篇总结继续探讨。之前我们的DataSorter的Sort方法虽然可以对任何实现了Comparable接口的对象进行排序,不过,麻烦事在于,这些对象实现的comparaTo方法只有一种实现,只能写一种,不能写太多,而且将来我想任意的扩展怎么计算两个对象谁大谁小的规范,这个时候这个类该如何设计呢?现在我们对其进行实现。大家想想看,我们想对两个对象比较大小的方式进行拓展,这个方式就不原创 2015-06-25 11:41:16 · 965 阅读 · 0 评论 -
【设计模式】策略模式Strategy_01
下面我们来探讨一下设计模式里面的策略模式Strategy首先我们在Eclipse里面创建一个名为Strategy的工程我们在里面先写一个排序的测试类package cn.edu.hpu.Strategy;public class Test { public static void main(String[] args) { int[] a={9,5,3,7,1};原创 2015-06-25 11:28:40 · 1068 阅读 · 0 评论 -
【设计模式】责任链2-更好的解决问题
接着上一次我们处理敏感信息的问题开始:我们这个问题如何解决呢?不难,我们要对这些东西进行过滤,而且要求要对这些过滤信息进行动态的指定,那么只有这么一种做法,我们开启一个过滤器的接口:package cn.edu.hpu.responsibility;public interface Filter { /*你可以定义一系列规则来实现 这个Filter接口,在这个接口实现里面,原创 2015-03-27 11:17:34 · 988 阅读 · 0 评论 -
【设计模式】责任链4-链接链
紧接着上一个问题来:为了不要跟原来的代码冲突,又新建了一个工程,将所有代码放在一起。代码清单:(为了测试简洁,去掉了FaceFilter.java)Filter.javaFilterChain.javaHTMLFilter.javaMain.javaMsgProcessor.javaRequest.javaResponse.javaSesitiveFil原创 2015-03-27 11:27:12 · 1503 阅读 · 0 评论 -
【设计模式】责任链3-横刀植入
紧接着上一篇的开始:我们来说说普遍的解决方案,我们用一个类来模拟:这个类模拟一个够过滤器链条:package cn.edu.hpu.responsibility;import java.util.List;import java.util.ArrayList;public class FilterChain { List filters=new ArrayList();原创 2015-03-27 11:22:15 · 1385 阅读 · 0 评论 -
【设计模式】责任链1-提出问题
比方说我们做了一个BBS系统,每个人都可以在系统里发表自己的言论和信息。我们要对这些信息进行检查,看看有没有敏感要素和一些影响网站速度的脚本语言。如果不检查,网站可能会被监管部门查封。所以,在数据存入数据库的时候,要对数据进行一系列的检查。我们创建一个Filter的工程,在cn.edu.hpu.responsiblilty包下创建一个名为Main的类:直接假设你在网上发表一个信息:原创 2015-03-27 11:12:16 · 983 阅读 · 0 评论 -
【设计模式】Object Oriented面向对象思想剖析
OO思维(Object Oriented以对象为方向)这里以"老张开车去东北"为例子。创建一个ThinkInOO的工程:先来看看小明的非面向对象思维的工程:package cn.edu.ThinkInOO;public class Test1 { public static void main(String[] args) { System.ou原创 2015-02-14 12:12:59 · 1541 阅读 · 2 评论 -
【设计模式】面向对象作业-超级母牛的故事
留的作业:农场一头小母牛,每年生头小母牛,母牛五岁产母牛,二十年上多少牛?马老师给的这个问题我个人感觉不太好理解,就按照我自己的理解吧,我把题目给白话文一下:农场中引进一只超级母体牛,它每年都可以生一只普通小牛,而它生下的普通小牛到5岁的时候会生下一只普通小牛,以后就不会再生。问这个农场20年后有多少只牛(包括超级母牛)?分析问题,这是一个群原创 2015-02-14 14:29:28 · 1522 阅读 · 0 评论 -
【设计模式】Iterator迭代器设计模式(容器和容器的遍历)
在遍历容器元素的时候,有很多初学者在疑惑,为什么返回一个iterator我就能够去遍历这个容器了呢?今天我们就来深入剖析一下迭代器iterator的设计模式(循序渐进的剖析,一定要耐心看完)iterator是"四人帮"所定义的23种设计模式之一(不太难,也不是非常重要,只是在遍历容器的时候能够用到)首先需要读这个总结的同志掌握面向对象的思想。1.我们先自己写一个可以原创 2015-02-24 00:13:27 · 1868 阅读 · 0 评论 -
【设计模式】观察者模式
1.介绍观察者模式定义了一种一对多的关系,一个被观察者可以被多个观察者监听,并且可以拥有添加或删除观察者的功能。当被观察者的状态发生改变时,将会通知所有监听它的观察者。2.结构(1)抽象的被观察者定义一个观察者的接口或抽象类,其中有新增、删除以及通知所有观察者的方法定义。(2)抽象的观察者定义观察者接收到监听对象的更新状态之后执行的动作的方法(3)具原创 2017-05-04 09:59:11 · 786 阅读 · 0 评论