如果要问起近10年来在计算机软件工程领域所取得的重大成就,那么就不能不提到
设计模式(Design Pattern)了。 什么是模式呢?
1.3 另一个简单的例子(3月12日)
实际上这只是工厂方法的最简单,最明显的应用。还有一些地方也会用到工厂方法
,但是并不像上面那个问题所表现的那么直接。再举个最简单的例子吧,比如我们需要
一个类来完成两个逻辑变量的或运算,我们都知道,如果第一个逻辑变量是True,那么
可以不用任何计算就可以得到最后的结果是True。而如果不是True,则需要进行运算。
根据这一点,我们可以用两个类和工厂方法模式来实现这个模型,以达到简化计算的目
的。
class ComputeExp {
boolean a,b;
boolean geta(){ return a};
boolean getb(){ return b};
boolean compute(){ return a|b};
public computeExp(boolean a1, boolean b1)
{a=a1;b=b1;};
}
class ComputeExpChild extend ComputeExp{
boolean compute() {return true;};
}
public class ComputeFactory{
ComputeExp createClass(boolean a1, boolean b1){
if (a1==true) return new ComputeExpChild(a1,b1);
else return new ComputeExp(a1,b1);
}
}
这段程序应该不再需要什么讲解了吧,简单明了,但是确实揭示了工厂方法模式的
一个很重要的应用。需要说明的是,这儿应用的实际上是工厂方法模式的一个变体。可
以注意到,我并没有声明一个抽象的超类,而是用其中的一个较为普通的类作为另外一
个类的父类。这其实同标准的工厂方法并没有什么不同,毕竟,这些类都有一个公用的
接口——这才是工厂方法的精髓所在。
当然,这个问题完全没有必要搞的如此复杂,这儿用这个例子,只是想说明工厂方
法的另外的应用。也可以说明,并不是所有的问题背景都是明显的,对模式的选择和应
用,也需要一定的知识和经验。因而模式并不是万能的,它运用的好坏,还是要取决于
施用者对问题的理解程度。
上面对设计模式作了一个简要的介绍,相信大家都用该对其有了一些概念了吧。OK
,热身完毕,下一篇我们将进入正题,探讨在Java中设计模式的应用。