java设计模式--工厂方法模式

来源:互联网 发布:淘宝和飞牛网价格对比 编辑:程序博客网 时间:2024/06/17 21:18

工厂方法模式(Factory Method Pattern)定义了一个创建对象的接口,通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。

工厂方法结构:

 http://zhupan.iteye.com/upload/picture/pic/2304/aa2dfa0b-cd37-4bfc-a411-dd75ee60ab5f.gif

public abstract class Product {      public abstract void use();}
产品类声明了抽象方法use(),use方法的具体实现则由Product子类负责。

public abstract class Factory {       public final Product create(String owner) {              Product product = createProduct(owner);              registerProduct(product);              return product;}        protected abstract Product createProduct(String owner);        protected abstract void registerProduct(Product product);}

Factory类以create方法创建实例,createProduct方法则由子类来具体实现product的创建,registerProduct完成product注册。

public class InstanceProduct extends Product {    String owner;    public InstanceProduct(String owner) {           this.owner = owner;    }        public void use() {    System.out.println(owner);    }}
public class InstanceFactory extends Factory {private Vector mVector = new Vector();protected Product createProduct(String owner) {return new InstanceProduct(owner);}protected void registerProduct(Product product) {mVector.add(product);}}

紧耦合和松耦合:如何进行模块划分?
主模块(抽象部分)-->次模块(细节具体部分) 对模块进行分析(高层模块-->低层模块)
在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。
如何应对这种变化?如何提供一种“封装机制”来隔离出“这种易变对象”的变化,从而保持系统中
“其他依赖该对象的对象(主逻辑)”不随着需求改变而改变?
解决:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟。




原创粉丝点击