Tags » Design Pattern

The State Pattern

The State Pattern allows an object to alter its behavior when its inner state changes. The object will appear to change its class.

状态Pattern和strategy Pattern是一对双胞胎,只有在出生之时才分开。

68 more words
Design Pattern

MVC Design Pattern

MVC Pattern stands for Model-View-Controller Pattern. This pattern is used to separate application’s concerns.

  • Model – Model represents an object  carrying data. It can also have logic to update controller if its data changes.
  • 299 more words
Object Oriented Analysis And Design Pattern

Iterator and Composite Patterns

Iterator and Composite Patterns

有许多方法可以把一堆object放到一个集合中,可以用array list, set, hashMap或者其他的。

但是,有些时候客户想要遍历这些对象,而你不希望客户知道你是如何把他们存起来的。这个时候你可以使用iterator pattern, 在你的Object内部包含(has-a)一个iterator (implement java iterator interface<E>), 然后用自己的方法implement所需要的next()和hasNext()方法。

这个思路其实非常简单。

接下来,我们将用java 提供的iterator来完成以上任务。java util里的iterator还包含了remove(), 但如果你不像implement它的话,可以抛出一个java.lang.UnsupportedOperationException运行时异常。

在多线程下,使用remove()可能会导致不同的线程之间删掉元素,导致难以预料的结果。所以必须极其小心。

使用java自带的iterator.因为arrayList自己本身就implement这个interface, 所以直接return就可以了。

而数组并没有自带的iterator, 于是我们还是要自己implement这个接口。 119 more words

Design Pattern

Template Method Pattern

其实我们在自己的设计中(PSO framework)中已经完全的使用了这个pattern的强化版,而你自己并没有意识到。但这个章节还是有意义的。

基本的idea依然很直接,我们想要重用一个algorithm, 这个algorithm大多数的process都可以被重用,但是其中某些步骤或许不会被用到,或者会被其他一些方法替代。想想EC算法,其实大多数变种走得都是这个套路。因此,我们可以提取他们的共同之处。写成一个abstract类,其中有一些method被implement了,因为他们是各种sub algorithm共有的。其中没有被implement的算法留给子类自己解决。

这个就是template method pattern的核心思想了。

更多的,我们可以结合strategy pattern将所以可能会变化的method都写成基于interface的子类,然后用combination将全部methods整合。然后在子类中,自己实现这些method,然后 ”在算法内部” 就会用delegation的方式dispatch到你implement的method上。如果觉得太麻烦,还可以使用factory pattern建自己的factory专门收集各种method子类,这样就不用手动传参数,可以让experiment代码看起来简洁一点。Neat!

这么说来我们已经会用这个Pattern了。What’s more?

对模板方法进行挂钩。

有时候,子类需要在父类的算法中加上一些步骤,这种例子在EC算法里简直比比皆是。因为子类无法在不override父类方法的同时往里面插入语句,于是可以使用hook的方法。

其实是父类在一开始时就定义好一些hook(), 这些hook methods不作任何事情。完全等着子类来定义,子类可以选择不做任何事,也可以选择往里插入一些自己的算法。比如下面的例子:

这样作的最大的弊端就是,父类定义的hook越多,子类就有很多hook需要implement, 虽然子类可以什么都不作,但依然会让程序看起来很丑,因为有很多空白的hook().

下面是一个framework最最最常用的principle.

The Hollywood Principle…

14 more words
Design Pattern

Adapter and Facade Patterns

Adapter

当先有的两个系统不兼容时,你不想改变现有代码,你可以写一个类,将原有接口转成现有接口。

The Adapter Pattern converts the interface of a class into another interface the clients expect.

Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.

85 more words
Design Pattern

Tứ đại kì thư

Tương truyền trong giới võ học có 4 quyển kì thư (thực ra là lắm quyển bỏ mợ ra nhưng đặt tên bài viết cho nó kêu ấy mà) ai nắm được mấy quyển kì thư này thì trình đạt sẽ lên mức thượng thừa, thống nhất võ lâm, xưng bá thiên hạ (giống kiểu trong phim Ỷ thiên đồ long kí ý) 519 more words

Tips

Understanding MVP Pattern in Android

Understanding Model View Presenter in its simplest form. (MVC vs. MVP)

There are great post out there that shows you how to implement Model-View-Presenter pattern with in your android applications in detail. 228 more words

Design Pattern