设计模式
文章平均质量分 72
cykic
在哪都是搬砖
展开
-
设计模式心得:观察者模式 (observer pattern)
应用很好理解:一个subject,希望在更新的时候 (更新的定义可以从setChanged方法获得,例如,小于5的更新不通知,见下),自动通知一个observer list。 每个观察者收到更新后的动作与subject无关,大家可以自由加入/离开observer list。 java.util自带Observer, 类图 (来源Head First Design Patterns):原创 2015-01-26 09:19:09 · 521 阅读 · 0 评论 -
设计模式心得:命令模式 (command pattern)
核心思想:将对对象的请求,或者说是命令,封装为对象。 这样可以解耦命令的实现以及命令的传达, 并且可以比较方便的将命令序列化,如队列化,等等 在这个封装的命令对象中,只暴露出execute()方法 (如果有需求, 也可以封装undo()方法)。 举例: 一个控制器,有若干个按钮,控制若干个元件。 首先,定义命令这个接口: public interface Command原创 2015-02-02 09:06:53 · 463 阅读 · 0 评论 -
设计模式心得:适配器模式(adapter pattern)和外观模式(facade pattern)
适配器简单来说,就是一个插座转换头,将一套接口转换为另外一套接口。 interface A { void foo1(); void foo2()} Interface B { void foo1(); void foo3()} class BImpl implements B { //Do s } class BtoAAdapter implements A { B b; BtoAAda原创 2015-02-02 12:50:41 · 474 阅读 · 0 评论 -
设计模式心得:策略模式 (strategy pattern)
Strategy模式: stragegy可以是任意的方法,如shopping cart中算discount, 算sum的方法,或是汽车的启动方法,或是鸭子飞的方法。 最终要解决的问题是:在这些方法对于不同对象实现不一致时,应该如何设计类。 比如,算discount, category 1的discount是5%, category 2是10% + $5,等等。 具体实现,将方法抽离出原创 2015-01-26 07:39:35 · 555 阅读 · 0 评论 -
设计模式心得:装饰模式 (decorator pattern)
装饰模式用于类功能很多需要进行大量继承或是多重继承的情况, 或是需要组合大量属性,难以维护的类。 例如各种菜系会加很多调料,各种调料的属性不同,若是直接用composition,必然难以维护,需要生成少辣或是清真等特殊情况是需要进行代码重写,若使用装饰模式,则可以直接动态生成所需。 (仍需具体代码理解) 总体图 (来源wikipedia): 具体来讲,父类是一个抽象类,原创 2015-01-26 11:13:39 · 623 阅读 · 0 评论 -
设计模式心得: 模板方法模式(template method pattern)
很容易理解,将一系列行为封装成一个模板, 这个模板可以被各种具体的行为调用。模板包含的行为可以是通用的, 也可以是根据具体应用有所不同的。当具体应用不同时,行为定义为抽象的,这样在子类中可以自由实现。 例子: 炒菠菜和炒芹菜, 步骤都是: 开火 -> 放油 -> 放菜(不同实现) ->加盐 于是我们有基类: public abstract class StirFry { publi原创 2015-02-22 16:52:17 · 502 阅读 · 0 评论 -
网站架构演化 -- 我的笔记
读了《大型网站技术架构》一书,基本是科普的水平,没有太多的深入分析。但是读过后还是觉得对于平常在公司做的一些事情,有了一些高屋建瓴的理解。把我的一些笔记留在这里。网站的演化过程:LAMP或类似架构瓶颈: traffic增长,无法接受每次对DB的访问 使用缓存具体操作:local cache (如程序实现的cache), remote cache server(一些专用的缓存服务器,读速度快,容量有限原创 2016-01-03 01:23:49 · 448 阅读 · 0 评论