Java设计模式
ydx115600497
这个作者很懒,什么都没留下…
展开
-
Java设计模式--代理模式
二、代理模式 顾名思义,代理模式可以理解为本身没有空去处理一些事情,而将这些事情交给这个代理人去做。 例子:西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理。(有点少儿不宜) 可以先定义一类女人:这类女人可以干相同的事,也就是有一致的接口。public interface KindWomen { //这种类型的女人能做什么事情呢? pub原创 2016-07-29 21:17:55 · 285 阅读 · 0 评论 -
Java设计模式--策略模式
一、策略模式 例子:以诸葛亮给赵云三个锦囊妙计为例。三个妙计分别在不同的时间进行调用。 类图如下: 以策略作为接口类型,提供一个待实现的方法,三个妙计均继承策略,可以分别实现策略中的方法。于是可以传入不同的类型,实现不同的策略。public class Context {//构造函数,你要使用那个妙计 private IStrategy strae原创 2016-07-29 20:50:24 · 285 阅读 · 0 评论 -
Java设计模式--状态模式
状态模式【State Pattern 】状态模式以电梯的状态转变为例。 先看下最初的类图设计。当然这样子的设计实现起来很简单。如果再加上某个所处的状态能过渡到的状态呢?这时候就要考虑各个状态的相互转化了。有了这张表再来设计一下类图:定义如下的接口:public interface ILift { //电梯的四个状态 public final static int OPENING_S原创 2016-07-31 17:57:15 · 407 阅读 · 0 评论 -
Java设计模式--访问者模式
访问者模式【Visitor Pattern 】以打印公司员工的信息报表为例。下面先看下类图。使用了一个模版方法模式,把所要的信息都打印出来。这样子写出来的代码就不太符合公司不同管理层的需要,不能满足各自的需求。每个普通员工类和经理类都一个方法 report,那是否可以把这个方法提取到另外一个类中来实现呢。最初的类图如下:两个类中都有report()方法,那么再进行一些改善。这样子就将report()原创 2016-07-31 17:14:56 · 285 阅读 · 0 评论 -
Java设计模式--责任链模式
责任链模式【Chain of Responsibility Pattern 】以古代妇女三从(未嫁从父、既嫁从夫、夫死从子)为例。先看下刚开始的类图:古代悲哀女性:public interface IWomen { //获得个人状况 public int getType(); //获得个人请示,你要干什么?出去逛街?约会?还是看电影 public String get原创 2016-07-31 16:21:48 · 635 阅读 · 0 评论 -
Java设计模式--观察者模式
观察者模式【Observer Pattern 】观察者模式以秦国时期李斯监视韩非子为例。先看下类图:被观察者:public interface IHanFeiZi { //韩非子也是人,也要吃早饭的 public void haveBreakfast(); //韩非之也是人,是人就要娱乐活动 public void haveFun();}被观察者的实现类:publi原创 2016-07-31 15:39:48 · 393 阅读 · 0 评论 -
Java设计模式--组合模式
组合模式【Composite Pattern】组合模式以公司各个阶层的不同职能为例来进行展开。先看下最初的类图:倘若程序这样子设计,出现三个接口,然后再搞实现类,最后程序肯定是一大坨。从程序的简洁性和抽象性来看,显然不合理,比如说一些方法是可以提炼出来当抽象方法的,提升抽象的抽象性。再看一下更改后的类图:这样子的设计就将根节点也视为树枝节点,都有自己的子节点,这样的设计利用了他们之间的共性,当然接口原创 2016-07-31 14:46:38 · 413 阅读 · 0 评论 -
Java设计模式--迭代器模式
迭代器模式【Iterator Pattern 】 迭代器可以解决一些遍历的问题。那我们以老总查看公司项目信息为例。先看下最初的类图。上面的类图可以完成老总的需要,下面使用迭代器的方式来进行。看下类图:IProject 可以定义如下:public interface IProject { //增加项目 public void add(String name,int num,int c原创 2016-07-31 11:23:38 · 294 阅读 · 0 评论 -
Java设计模式--装饰模式
装饰模式【Decorator Pattern】 装饰模式顾名思义就是将程序装饰进行装饰完成我们所想要的效果。山寨手机需要装饰,我们的程序有时候也需要进行装饰。 下面以向家长汇报分数让家长签字为例。先看下最初的类图。倘若这样子直接拿给老爸看(直接汇报成绩,要签名),那岂不是要挨板子。对于差生来讲,还得先装饰一下好。 下面再看一下改善后的类图。这样子设计的话,就可以在report()方法中做点手脚原创 2016-07-31 10:55:52 · 293 阅读 · 0 评论 -
Java设计模式--命令模式
命令模式【Command Pattern 】 以公司做项目为例,一个项目的完成需要不同的项目组进行合作,先假设客户与每个项目组进行讨论,最后执行任务。这个项目主要是进行增删改查。 先看类图:Group类设计如下:public abstract class Group { //甲乙双方分开办公,你要和那个组讨论,你首先要找到这个组 public abstract void find原创 2016-07-30 21:10:28 · 284 阅读 · 0 评论 -
Java设计模式--桥梁模式
桥梁模式【Bridge Pattern 】 以公司生产产品为例子。一个房地产公司,一个山寨公司,山寨公司什么好赚就生产什么。我们先进行这样的设计。看类图:公司Crop先定义如下:public abstract class Corp { /* * 是公司就应该有生产把,甭管是什么软件公司还是制造业公司 * 那每个公司的生产的东西都不一样,所以由实现类来完成 */原创 2016-07-30 20:21:03 · 598 阅读 · 0 评论 -
Java设计模式--建造者模式
建造者模式【Builder Pattern 】 在模板方法模式时用到了公司生产马车的例子。这里继续,客户有了新的要求,就是能够控制基本方法的执行顺序。 先看一下类图:定义一个车辆模型的抽象类,所有的车辆模型都继承这个类public abstract class CarModel { //这个参数是各个基本方法执行的顺序 private ArrayList<String> sequ原创 2016-07-30 19:38:38 · 316 阅读 · 0 评论 -
Java设计模式--模板方法模式
模板方法模式先看一下通用的类图: 其中 TemplateMethod 就是模板方法,operation1 和 operation2 就是基本方法,模板方法是通过汇总或排序基本方法而产生的结果集。 这样看可能会很枯燥,来个具体的例子先。某公司生产不同的车子,见下面的类图: 有四个基本的方法还有一个模板方法。模本方法在抽象类中做实现。当然这个模板方法也称为具体方法,因为其在抽象类中进行了实现。其他原创 2016-07-30 17:17:55 · 345 阅读 · 0 评论 -
JAVA设计模式--适配器模式
适配器模式 适配器可以借助生活的例子理解:你笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V,日本是 110V,但是这个适配器能够把这些不同的电压转换为你需要的 36V 电压,保证你的笔记本能够正常运行。 下面看看适配器的通用类图:Target 是一个类(接口) ,Adaptee 是一个接口,通过 Adapter 把 Ad原创 2016-07-30 16:30:02 · 191 阅读 · 0 评论 -
Java设计模式--门面模式
门面模式 该模式以写信送信为例。最初的类图如下: 刚开始的情况是要依次序的执行LetterProcess这四个步骤,那么如果有一个步骤不能完成,那么就不算完成这个过程,最后的代码如下:完全体现不出高内聚的设计要求。public class Client { public static void main(String[] args) { //创建一个处理信件的过程 Let原创 2016-07-30 11:56:05 · 317 阅读 · 0 评论 -
Java设计模式--简单工厂模式与抽象工厂模式
简单工厂模式 以女娲造人为例。下面是类图。 步骤: 1、先定义接口人2、不同的人种实现人这个接口,并实现接口中的方法3、定义一个生产人的工厂: Human createHuman(Class c) 传入要生产的人种对应的类,即可进行生产相应的人种。 human =(Human)Class.forName(c.getName()).newInstance(); //产生一个人种4、在主类原创 2016-07-30 10:46:53 · 271 阅读 · 0 评论 -
Java设计模式--多例模式
四、多例模式 相比单例模式,多例模式就是类中可以有多个实例对象。这里讨论有上限的多例模式。以两个皇帝的情况为例。下面是类图。 先将皇帝类定义如下:public class Emperor { private static int maxNumOfEmperor = 2; //最多只能有两个皇帝 private static ArrayList emperorInfoList=ne原创 2016-07-29 23:38:09 · 593 阅读 · 0 评论 -
Java设计模式--单例模式
三、单例模式 顾名思义,单例就是只有唯一的例子,不能山寨的。以大臣朝拜皇帝(一般一个朝代只有一个皇帝吧)为例子,下面是类图 首先先定义一个皇帝:public class Emperor { private static Emperor emperor = null; //定义一个皇帝放在那里,然后给这个皇帝名字 private Emperor(){ //世俗和道德约束你,目原创 2016-07-29 21:52:50 · 345 阅读 · 0 评论 -
I/O编程强化
1.流及其意义 流的概念使得文件、网络、内存等设备可以被统一处理2.字节输入输出流 (1)字节输入流基类InputStream 常用读取数据方法 int read():从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法) int read(byte b[]):读多个字节到数组中,填满整个数组 int read(byte b[], int off, int l原创 2016-10-01 10:11:10 · 214 阅读 · 0 评论