引言 在翻阅《阿里巴巴 Java 开发手册》时,碰到如下规则: 【推荐】表达异常的分支时,少用 if-else 方式,如果使用 if()...else if()...else... 方式,也请勿超过三层,超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现。 我对手册中的规则进行了总结,意思相仿。 关于卫语句我们不作讨论,本文重点讲述什么是策略模式、什么是状... 作者:championhengyi 发表于 2019/01/25 17:15:19 原文链接 https://blog.csdn.net/championhengyi/article/details/86649264 阅读:1932 继续阅读 >>


董恒毅 19/01/25 17:15:19
1. 前 言 在上篇译文《理解Reactor模式:线程模式和事件驱动模式》 中,作者讲解了多线程模式和事件驱动 […] 继续阅读 >>


郭遗欢 18/08/02 19:09:31
本文为技术翻译,原文出自:《Understanding Reactor Pattern: Thread-Bas […] 继续阅读 >>


郭遗欢 18/07/26 12:25:37
定义 策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 Strategy 模式典型的结构图为: 大家肯定看着很懵逼,其实第一次接触类图的时候我自己也是这样。 那么咱们举个例子来解释一下。 假设我们要实现一个角色游戏,context为所有角色的基类(例子的代码后面会实现,此处只是拿context举例,此处的context并不是基类)... 作者:Sanjiye 发表于 2018/06/22 23:47:23 原文链接 https://blog.csdn.net/Sanjiye/article/details/80779260 阅读:280 继续阅读 >>


李佳灏 18/06/22 23:47:23
策略模式 定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 OO(Object Oriented)面向对象 基础:抽象、封装、多态、继承 原则: 找出应用中可能需要变化之处,把它们独立出来。 针对接口编程,而不是针对实现编程。 多用组合,少用继承。 观察者模式 定义了对象间的一对多依赖,这样一来,当一个对象改变时,它的所有依赖者都会收到通知并自动更新。 主题(可观察者)用一个共同的接口来更新观察者。 观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口。我们可以独立地复用主题或者观察者,改变主题或者观察者其中一方,不会影响另一方。 可以从被观察者处推(push)或者拉(pull)数据。(推的方式更好) 有多个观察者时,不可以依赖特定的通知次序。 Java有多种观察者模式的实现,包括通用的java.util.Observable,但要注意它是一个类,限制了它的使用和复用。如果有必要,可 继续阅读 >>


李猛 18/04/18 23:21:50
观察者模式是JDK中使用最多的设计模式之一. 在学习观察者模式之前, 我在网上也找了很多博客, 这些博客都是的讲解都是基于 head first 设计模式 这本书的. 如果看书的话, 很简单就能学会这个设计模式, 但是将书上的内容些成博客, 其实是不太容易理解的. 所以在这篇博客中, 我将用我自己的方式以示例的方式来讲解这个设计模式. 1. 观察者模式是什么? 它解决了什么问题? 作者:dela_ 发表于 2018/02/05 00:30:20 原文链接 https://blog.csdn.net/dela_/article/details/79242702 阅读:173 评论:1 查看评论 继续阅读 >>


祝一迪 18/02/05 00:30:20
1. 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 2. 动机 对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印假脱机( printer spooler),只应该有一个文件系统和一个窗口管理器。一个数字滤波器只能有一个 A / D转换器。一个会计系统只能专用于一个公司。 我们怎么样才能保证一个类只有一个实例并且这个实例易于被访问呢?一个全局变量使得一个对象可以被访问,inng kk。 一个更好的办法是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法。这就是Singleton模式。 3. 适用性 在下面的情况下可以使用 S i n g l e t o n模式 - 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 - 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 4. 结构 5. 参与者 定义一个 I n s t a n c 继续阅读 >>


楚东方 17/07/31 08:59:39
通常,I/O复用机制都需要事件分享器。分享器对象可将来自事件源的I/O事件分离出来,并分发到对应的Read/Write事件处理器。开发人员预先注册需要处理的事件及该事件对应的事件处理器。 Reactor和Proactor都涉及到了事件分享器,不同的是,Reactor是基于同步I/O的,而Proactor是与异步I/O相关。在Reactor模式中,事件分离器等待某个事件或者某个操作的状态发生,比如文 作者:to_be_better 发表于 2017/03/01 18:40:34 原文链接 https://blog.csdn.net/to_be_better/article/details/59116897 阅读:915 继续阅读 >>


师毅 17/03/01 18:40:34
一:工厂模式 将实例化具体类的过程交给工厂,你只用告诉它你需要什么样的类型就好了。 比如下面这段代码: Fruit createFruit(string name) { Fruit fruit; -------------------------------- if(name == "Apple") { fruit = new Apple(); } else if(name == "Banana") { fruit = new Banana(); } else if(name == "peach") { fruit = peach(); } --------------------------------- fruit.cut(); //将水果切块 fruit.box(); //将水果装盒 return fruit; } 如果我将上面代码片段中两条横线之间的代码实现为另一个方法叫Fru 继续阅读 >>


杨博东 16/12/06 20:43:55
一:装饰者模式 将最初的对象用一层一层外衣(修饰者)包装起来,实现自由组合。 举个栗子: 最初的对象:咖啡 外衣:糖,牛奶,豆浆… 我可以将上面的类型自由组合,比如 咖啡加糖和牛奶 或者 咖啡加豆浆 或者 咖啡加糖和豆浆 或者 ...。 二:不使用装饰者模式 实现上面的栗子,如果没有使用装饰者模式,类图可能是这样: 缺点非常明显: 有多少种组合就必须自己实现多少个子类 设计子类时必须严格考虑,比如没有人在咖啡中加牛奶又加豆浆 子类的cost()方法实现具体价格的计算,那要是牛奶价格上升,调整与牛奶相关的每一个子类中的cost()方法将会使你奔溃。 三:使用装饰者模式 基本原则是我们定义一种公共类型A,每个A中有相同的方法,参数都是同一种类型A,这样我们可以一层一层在原始咖啡上加东西。假设像下面这样调用我就能返回相应的价格。 CoffeeWithMilk = new Milk(new Coffee()); //CoffeeWithMilk.cost() 就能返回`咖啡加牛奶`价格 再来个稍微复杂的 CoffeeW 继续阅读 >>


杨博东 16/12/01 11:34:31