正在加载图片...
和分派(Delegation)告诉我们,尽量将长的代码分派"切割"成每段,将每段再"封装“起 来(减少段和段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改 每段,不会再发生牵一动百的事情。 在本例中,首先,我们需要将创建实例的工作与使用实例的工作分开,也就是说,让创建 实例所需要的大量初始化工作从Sample的构造函数中分离出去。 这时我们就需要actory工厂模式来生成对象了,不能再用上面简单new Sample(参数)。 还有,如果Sample有个继承如MySample,按照面向接口编程,我们需要将Sample抽象 成一个接口.现在Sample是接口,有两个子类MySample和HisSample.我们要实例化 他们时,如下: Sample mysample=new MySample(); Sample hissample=new HisSample(); 随着项目的深入,Sample可能还会"生出很多儿子出来",那么我们要对这些儿子一个个 实例化,更糟糕的是,可能还要对以前的代码进行修改:加入后来生出儿子的实例.这在传统 程序中是无法避免的. 但如果你一开始就有意识使用了工厂模式,这些麻烦就没有了. 工厂方法 你会建立一个专门生产Sample实例的工厂: public class Factory( public static Sample creator(int which){ //getclass产生Sample一般可使用动态类装载装入类。 if (which==1) return new SampleA(); else if (which==2)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起 来(减少段和段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改 每段,不会再发生牵一动百的事情。 在本例中,首先,我们需要将创建实例的工作与使用实例的工作分开, 也就是说,让创建 实例所需要的大量初始化工作从 Sample 的构造函数中分离出去。 这时我们就需要Factory工厂模式来生成对象了,不能再用上面简单new Sample(参数)。 还有,如果 Sample 有个继承如 MySample, 按照面向接口编程,我们需要将 Sample 抽象 成一个接口.现在 Sample 是接口,有两个子类 MySample 和 HisSample .我们要实例化 他们时,如下: Sample mysample=new MySample(); Sample hissample=new HisSample(); 随着项目的深入,Sample 可能还会"生出很多儿子出来", 那么我们要对这些儿子一个个 实例化,更糟糕的是,可能还要对以前的代码进行修改:加入后来生出儿子的实例.这在传统 程序中是无法避免的. 但如果你一开始就有意识使用了工厂模式,这些麻烦就没有了. 工厂方法 你会建立一个专门生产 Sample 实例的工厂: public class Factory{ public static Sample creator(int which){ //getClass 产生 Sample 一般可使用动态类装载装入类。 if (which==1) return new SampleA(); else if (which==2)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有