Design Patterns
E_k_in
这个作者很懒,什么都没留下…
展开
-
Strategy
这是我从《Head First 设计模式》这本书中学习到的第一个设计模式-策略模式。这本书的内容还是挺有趣的值得推荐。话不多说,进入正题。首先谈一下策略模式的价值所在,书中是以设计鸭子的例子来讲解的。我这里主要说下我的理解。在一些类中,某些行为是比较活跃的。比如一个Person类,这个类有一个say方法,表示人说话的行为,但是实际生活中,有些人说话比较快,有些人说话比较慢,有些人不会说话,原创 2017-07-16 11:39:51 · 188 阅读 · 0 评论 -
Decorator
这篇文章主要讲解装饰着模式,首先谈一下应用场景,昨天我领到了第一笔转正后的工资,我想买一个手机奖励下自己。于是我就去网上商城看了下手机,某品牌手机有两种型号,还有三种附属产品 耳机、电池以及充电器。我买手机也就有很多种选择。那么如果要你来搭建这个网上商城你会怎样设计呢?这里我应用刚才学习的装饰者模式来解决实现这个系统1 首先新建两个接口 分别为 Phone.java 和PhoneDecorator...原创 2017-07-16 21:46:47 · 217 阅读 · 0 评论 -
Condition实现生产者消费者模式(等待/通知机制)
我在前面的博客中写过一个生产者消费者的实现方法,只不过那篇文章用的是Object类的wait()和notify()、notifyAll().配以synchronized实现的。这篇文章将会用Reentrantlock进行同步,用condition的await()和signal、signalAll()实现等待、通知机制。需要注意的是:condition.await();调用后会立即失去锁,c原创 2017-08-26 10:51:32 · 593 阅读 · 0 评论 -
生产者消费者模式
有一个生产电脑的工厂,由于近来行业不景气,工厂不能大量制造电脑。每次只能生产一台电脑,等待电脑卖出去后,再生产一台电脑,等电脑卖出去后才能继续生产...(当然,我的这个举例有些生硬)。如何用程序来模拟这个场景呢?下面我用生产者消费者模式来模拟这个场景。首先,新建一个电脑类(相当于这个电脑工厂),这个电脑有两个方法,一个生产方法和一个消费方法。public class Computer {原创 2017-08-06 15:44:56 · 165 阅读 · 0 评论 -
Singleton
今天学习的这个模式比较简单,就是常说的单例模式。其实在看《Head First 设计模式》这本书之前我就会用单利模式,但是不能没有深入理解单利模式。可能在看到这篇文章的时候你也会单利模式,但是我下面讲到的知识点你也可能不知道哟。话不多说先来一段单例模式的代码1 下面这段代码是我常写的单例模式。我说说下面这段代码的有点和缺点吧。优点:只有在用到单实例的时候才会新建对象。换句话说,如果你的程序中可能用...原创 2017-07-17 21:04:58 · 213 阅读 · 0 评论 -
Adapter
适配器模式相对来说还是比较简单的,不管是原理上的理解还是代码上的实现。其主要功能是:将一个接口转化为用户期待的另外一个接口适配器让原本不兼容的类可以合作无间。下面我用一个实例来告诉大家 适配器是如何工作的。在森林中有一个自动化游乐园,在游乐园里的某个地方每天专为人类提供桃子,为了不让除了人类之外的其他动物来吃桃子比如猴子,游乐园在最初设计的时候设置了一个测试环节,测试环节包括两个项目。因为原创 2017-07-18 22:08:22 · 192 阅读 · 0 评论 -
Command
今天我在《Head First设计模式》这本书中学习了 命令模式 ,书中是讲的是做一个多种家电遥控器的例子。我也没有想到实现另外的用到这个模式的例子,所以这个模式,我就按照书上的例子来照本宣科咯。不过其中还是会假如一点自己的总结。命令模式就是将执行命令的操作交给一个控制器来控制,并且实现松耦合,控制器可以动态地新增和删除命令命令模式所有的类和接口我觉得可以分为 4 种 分别是原创 2017-07-18 20:53:36 · 359 阅读 · 0 评论 -
Factory and Decorator (工厂模式与装饰者模式)
我前面的博文已经讲解了装饰者模式,如果你对这个模式还不太了解,建议先去看一下装饰者模式再来看 这篇工厂模式与装饰这模式组合的组合模式。我还是以生产手机为例,只是这次生产手机我是通过工厂来生产的。案例是这样的。华为有两款手机分别为PhoneI 与 PhoneII 由于某种原因,PhoneI 生产的时候必须带一个电磁,PhoneI I生产的时候必须搭配一个充电器和电磁。下面我将用两个工厂分别生产者原创 2017-07-21 07:06:05 · 1113 阅读 · 0 评论 -
Static Proxy(静态代理)
代理模式有两种主题,一种是真实主题(真正做事的),一种是代理主题(真实主题的代理,可以帮助真实主题做一些辅助功能,使得真实主题只用关心核心实现)。下面我用一个歌手唱歌的例子来实现代理模式。事情是这样的,你想在的生日宴会上请一个歌手来为你驻唱,但是歌手很忙的,你只能找歌手的经纪人谈这件事。当然你请歌手为你驻唱,你必须付出相应的资金。而这件事你只能找经纪人去谈,因为歌手只想负责唱歌。1 首先建立一原创 2017-07-20 19:52:38 · 237 阅读 · 0 评论 -
observer
这是我从《Head First 设计模式》这本书中学习到的第二个模式 观察者模式,其主要讲解了对象之间的一对多依赖,当一个对象的状态改变时,这个对象的观察者都会接收到通知并获取更新的数据。原书中用一个气象监测应用讲解了这个模式。我根据理解创建了一个关于 NBA球迷订阅各个球队战况的应用。具体实现看代码1:首先新建三个接口 这三个接口分别是 Subject.java\Observer.java原创 2017-07-16 19:00:50 · 493 阅读 · 0 评论 -
Dynamic Proxy(动态代理)
其实现在我还没有体会到动态代理和静态代理之间的差异(可能是因为我现在接触动态代理还不是很深,在以后可能才会理解动态代理的好处,读者千万不要看到这段话就认为动态代理和静态代理没差别)。现在唯一让我觉得动态代理有点优势的就是,静态代理的代理主题类中必须实现所有真实主题的方法,如果真实主题里面的方法有10个,代理主题也必须实现这10个方法(代理主题和真实主题实现同一个主题接口)。而动态代理,只用短短的几...原创 2017-07-20 21:29:40 · 895 阅读 · 0 评论