
设计模式
Healist
积极向上的小年轻,努力提高的小码农
展开
-
设计模式之策略模式(java)
什么是策略模式?定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户(引用自head first 设计模式中的解释)下面谈谈我自己对其粗浅的理解(java)所谓策略,就是动态的改变对象的行为,兵来将当,水来土掩,用类的形式封装最基本不会变的,用接口或者抽象类的形式来实现动态的内容。好多人都提及策略模式中以下三个重要对象概念: 环境(Context)角色原创 2016-12-20 10:35:08 · 433 阅读 · 0 评论 -
设计模式之代理模式(java)
文章转自阿福的博客原本想自己找例子讲解的,但是看了他发现还是老司机讲的好听,下面看看人家高能的生动解释:应用场景举例:比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时是这样的体现的先说说这个场景中的要素:一种类型的女人,潘金莲,王婆,西门庆,后来扩展的贾氏也和西门庆勾上了,我们是假设的,然后西门庆找潘金莲happy,但潘金莲不好意思直接,就找个王婆代理呗。我们看看转载 2017-01-25 22:32:49 · 441 阅读 · 0 评论 -
JAVA设计模式之状态模式
状态模式,从名字就能看出来是对状态的一些封装操作。状态模式三个要素是: 环境角色: 上下文(context),提供容器环境,持有抽象状态的接口引用,进而根据条件控制状态的变化。 抽象状态角色: 定义接口以及行为。 具体状态角色: 每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。 对开发中经常需要来判断状态的业务逻辑,我们应该把其封装成状态的类,看看一原创 2017-01-25 22:08:20 · 435 阅读 · 0 评论 -
设计模式之迭代器与组合模式(java)
迭代器模式与组合模式在这里我们继续引用head first中例子来进行说明:看看下面饭馆中俩种菜单的实现(一种基于ArrayList,另一种基于数组)public class MenuItem { String name; String description; boolean vegetarian; double price; public MenuItem(原创 2017-01-25 19:30:36 · 402 阅读 · 0 评论 -
设计模式之模板方法模式(java)
其实有些设计模式在潜移默化的编码当中你是已经掌握的了,只不过你没系统的去学习设计模式之前你不知道它统一的名称叫什么,统一概念和名词的好处就是减少沟通的成本,并能过滤掉一些小白。模板方法模式说起来非常简单,本身概念也很容易掌握,就是把通用的代码部分封装好一个模板,方便之后重复利用。这里还是引用head first中的例子,coffee和tea的制作过程分别是:coffee (1)把水煮沸 (2)用原创 2017-01-18 20:48:57 · 286 阅读 · 0 评论 -
设计模式之设配器模式
适配器模式的作用相当于一种中间件,让俩个对接有冲突的模块很好的捏合在一起从而发挥作用,适配器在其中就是胶水的作用。看一下代码实例,现在有绿头鸭和火鸡俩种动物,但假如现在你缺少了鸭子对象想用火鸡对象来冒充鸭子,看一下如何通过适配器模式来解决。俩种动物的功能接口public interface Duck { public void quack(); public void fly();原创 2017-01-18 20:47:23 · 484 阅读 · 0 评论 -
设计模式之命令模式(java)
命令模式,其实就是进一步封装,把方法调用封装起来,head first中举了一个很生动的例子,饭店中点餐的流畅如下:客户点了订单并交给服务端,然后女招待把订单交给大厨的师傅,大师傅最后呈现出一道可口的菜肴。 在这个过程中,客户只需要知道来饭店点好菜单就可以等吃饭了,服务员也是只需要知道把订单交给大厨,而大厨也只需要如何根据订单来做错了事情。实现一个打开电灯的命令public interface C原创 2017-01-12 04:27:20 · 345 阅读 · 0 评论 -
设计模式之单例模式(java)
单例模式,顾名思意就是就是单独唯一的对象实例。通过java本身的访问修饰符(static)其实很容易就控制实例唯一。但是有的时候设计的更规范的略复杂的模式会让你更加贴合实际的需求。看一个经典又简单(但不一定正确)的例子:public class Singleon { private static Singleton uniqueInstance; public Singleton()原创 2017-01-12 01:18:05 · 426 阅读 · 0 评论 -
设计模式之装饰者(java)
装饰者模式其是一种使用组合或者委托的方式对某种类进行进一步包装,避免直接全部使用继承实现很多的时候而显得非常臃肿。当你不想对原来的类结构做出改变,你又想给原来的类添加功能,你有可能就直接继承原来的类,这样做的问题是当需要很多功能添加的时候需要很多继承类,后期的维护会变的很困难,这就是所谓的“类爆炸”。所以使用装饰者模式是一个相对较好的方式在原功能类添加功能(不需要对原来的类结构做出改变),当然装饰者原创 2016-12-21 10:13:22 · 338 阅读 · 0 评论 -
设计模式之观察者模式(java)
观察者模式 = 主题 + 观察者(也叫订阅者)观察者订阅一个主题,当主题内容有更新的时候,观察者可以接受到更新通知,在这里还分为俩种获取更新的方式 推送 : 一旦主题有更新,就主动推送更新通知到各个观察者 拉取 : 主题有更新的时候,观察者需要主动去获取更新 下面我们来看一下基于推送的天气预报的例子,气象站是收集天气信息,WeatherData对象来保存气象数据,并且当We原创 2016-12-20 19:21:43 · 344 阅读 · 0 评论 -
设计模式之工厂模式(java)
工厂模式的种类分为三种: 简单工厂 工厂方法 抽象工厂 简单工厂模式看一下head first中披萨的例子:披萨的简单工厂类SimplePizzaFactory:public class SimplePizzaFactory { public Pizza createPizaa(String type) { Pizza pizza = null;原创 2016-12-30 17:07:53 · 351 阅读 · 0 评论 -
Futrue设计模式
Futrue模式就是咱们经常使用到的异步回调模式,异步执行直接返回不含真实数据的结果对象,等获取到真实数据后通过回调返回数据。package com.healist.coder;/** * @Author healist * @Description * @Create 2018-03-20 下午5:09 */public class FutureLearn { i...原创 2018-03-20 17:44:18 · 442 阅读 · 0 评论