设计模式
搬砖小松鼠
贮藏坚果,以备过冬!
展开
-
设计模式---观察者模式
观察者模式主要就是建立在观察者和被观察者之间, 观察者: 抽象观察者和它的具体实现 被观察者或者称之为主题:抽象主题和它的具体实现 代码如下: package com.zcj.observerpattern; public interface Observer { public void update(); } public class ConcreteObserver impl原创 2016-06-12 12:03:18 · 231 阅读 · 0 评论 -
设计模式----单例模式
通过懒汉模式: package com.zcj.singlepattern; //使用饿汉模式 public class SingleOne { private static final SingleOne instance =new SingleOne(); private SingleOne(){ } publi原创 2016-06-10 13:14:50 · 241 阅读 · 0 评论 -
设计模式---简单工场模式
使用静态工场模式,就是通过给工场提出对应的要求,通过调用工场的对应的静态方法来创建我们所需要的对象,工场的内部实现可以调用构造方法也可以通过反射来实现 如下:首先定义抽象类Food,它有二个实现类Rice和Apple, package com.zcj.abstracfactorypattern; public abstract class Food { public abstract原创 2016-06-10 13:35:05 · 260 阅读 · 0 评论 -
设计模式---工场方法模式
工场模式由抽象工场模式衍生而来,工场模式同样是由工场来创建类的实例,不同之处在于这里需要新建工场的实例 首先创建food和它的继承类 package com.zcj.factorypattern; public abstract class Food { public abstract void print(); } package com.zcj.factorypattern;原创 2016-06-10 13:48:59 · 252 阅读 · 0 评论 -
设计模式---抽象工场模式
抽象工场相对于简单工场模式又更进一步,简单工场每个工场与具体的产品绑定,而抽象工场则是为了产生产品系列组合。 它的好处是可以很方便的扩展产品系列,但是单个扩展新的产品不是很方便 这里我们先来定义二种产品Food和它的实现类,Shape和它的实现类如下 package com.zcj.abstractpattern; public abstract class Food { publ原创 2016-06-10 14:17:16 · 268 阅读 · 0 评论 -
设计模式---策略模式
从名字可以看出来就是选择不同的策略,在这里我们使用jdk模仿实现jdk中comparable和comparator来实现依据不同的策略来进行比较 这里演示了我们当需要对猫排序时,为了让猫与猫之间可以比较,首先我们在猫中定义了一个比较compareTo方法,因为对于很多其他类都会涉及到比较操作,因此这里讲这个方法抽象到一个借口中Comparable,但是对于具体的比较,我们可以直接写在compar原创 2016-06-10 15:08:14 · 267 阅读 · 0 评论 -
设计模式---责任链模式
当我们要做一件事情时,它需要被一步步的过滤器处理或者拦截器来处理,他们的原理就是责任链模式,spring中的拦截器便是这个原理,下面是代码实现: 我们对输入的一个字符串被最终获得时需要经过一系列的过滤,最终才是我们所得到的结果 package com.zcj.chainpattern; public interface Handler { public String hand(Str原创 2016-06-10 15:45:36 · 252 阅读 · 0 评论 -
设计模式---代理模式
最简单的例子就是我们找中介买房子:中介卖房子实际是帮忙房东卖房子,因此我们可以写出如下例子 package com.zcj.proxypattern; public interface Person { public void sale(); } package com.zcj.proxypattern; public class Landlord implements Person原创 2016-06-10 16:17:28 · 257 阅读 · 0 评论 -
设计模式---适配器模式
jdk中最经典的适配器模式应用便是字符流和字节流InputStreamReader,从名字可以看出前面是字节流,后面是字符流,我们生活中的比如买的港版iphone,拿到国内来充电就需要一个转接头 下面写一个简单的实例: 首先由一个特殊类,而我们想在另外一个一个接口的实现类中使用这个特殊类 package com.zcj.adapterpattern; public class Adater原创 2016-06-10 16:32:34 · 275 阅读 · 0 评论 -
设计模式---Iterator模式
迭代器模式,主要用于容器里面元素的遍历,其他地方用到的不多,这里举个实例,模仿jdk里面迭代器的实现,当然我这里并没有把Iterator方法抽象到iterable这个接口中,依据接口的设计原则,不要做一个面面俱到的接口,而应该让特定的接口完成特定的功能 以下是代码示例,使用了之后,我们在测试代码中,仅仅只需要改动一个位置就可以实现不同list的切换 package com.zcj.design原创 2016-06-10 12:44:43 · 324 阅读 · 0 评论