1.工厂模式
核心:基于不同的条件,创建不同的实例对象(产品)
优点:对象创建对于使用者是透明的,扩展性强(使用方只需要产品的名称,具体创建交给工厂)
缺点:每个具体实现(产品)需要增加一个类,使系统复杂
例如使用NotPad++或Sublime来写文本这个例子。
-
首先需要一个公共的接口WriterSoftWare,并具有write方法,然后有两个具体的实现类,NotPad和Sublime,这样就定义好了工厂的产品。
-
然后定义工厂Factory,Factory需要具备一个获取产品的方法,核心代码就在这个获取产品方法中,方法内部可以根据条件去创建不同的产品实例。
public WriterSoftWare getSoftWare(String name) { WriterSoftWare softWare = null; if (name.equals("notpad")) { softWare = new NotPad(); } else if (name.equals("sublime")) { softWare = new Sublime(); } return softWare; }
-
完成了工厂和产品的设计之后,就可以使用了,根据不同的条件去创建不同的实例。
public static void main(String[] args) { Factory factory = new Factory(); WriterSoftWare notpad = factory.getSoftWare("notpad"); notpad.write(); System.out.println("==================================="); WriterSoftWare sublime = factory.getSoftWare("sublime"); sublime.write(); }