总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
工厂模式
1、工厂方法模式
是我们最常用的实例化对象模式了,是用工厂方法代替new操作
public class Factory{ public static ISample creator(int which){ if (which==1) return new SampleA(); else if (which==2) return new SampleB(); } }
创建实例:
iSample sampleA=Factory.creator(1);
2、抽象工厂模式
这两个模式区别在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,就用抽象工厂
就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现
public abstract class Factory{ public abstract Sample creator(); public abstract Sample2 creator(String name); } public class SimpleFactory extends Factory{ public Sample creator(){ ......... return new SampleA } public Sample2 creator(String name){ ......... return new Sample2A } } public class BombFactory extends Factory{ public Sample creator(){ ...... return new SampleB } public Sample2 creator(String name){ ...... return new Sample2B } }
模板模式
定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。
Java的抽象类本来就是模板模式
优点:
模板方法模式通过把不变的行为搬移到父类,去除了子类中的重复代码。
子类实现算法的某些细节,有助于算法的扩展。