Cages 发表于 2013-2-3 11:35:07

抽象工厂模式

接口类:
 
package com.jerry.design.abstractFactory.imp;public interface DoAJob {public void doSometingLikeA();}
package com.jerry.design.abstractFactory.imp;public interface DoBJob {public void doSometingLikeB();}
package com.jerry.design.abstractFactory.imp;public interface AbstractFactory {public DoAJob createA();public DoBJob createB();}

 
实现类:
 
package com.jerry.design.abstractFactory.impl;import com.jerry.design.abstractFactory.imp.DoAJob;public class DoA implements DoAJob {@Overridepublic void doSometingLikeA() {         System.out.println(" do something like a!");}}package com.jerry.design.abstractFactory.impl;import com.jerry.design.abstractFactory.imp.DoBJob;public class DoB implements DoBJob {@Overridepublic void doSometingLikeB() {         System.out.println(" do something like b!");}}
 
 
package com.jerry.design.abstractFactory.impl;import com.jerry.design.abstractFactory.imp.AbstractFactory;import com.jerry.design.abstractFactory.imp.DoAJob;import com.jerry.design.abstractFactory.imp.DoBJob;public class Factory implements AbstractFactory {@Overridepublic DoAJob createA() {return new DoA();}@Overridepublic DoBJob createB() {return new DoB();}}
 
测试类:
package com.jerry.design.abstractFactory.client;import com.jerry.design.abstractFactory.imp.AbstractFactory;import com.jerry.design.abstractFactory.impl.Factory;import com.jerry.design.factoryMethod.imp.abstractClass;import com.jerry.design.factoryMethod.impl.ClassA;import com.jerry.design.factoryMethod.impl.ClassB;public class Test{public static void main(String[] args) {AbstractFactory ac = new Factory();ac.createA().doSometingLikeA();ac.createB().doSometingLikeB();// do something like a!// do something like b!}}


总结:选择一类实现的子类 例如我们可以继续扩展DoA的接口,使其复杂,那么就可以有多个子类实现这个接口,可是对于调用者来说,使看不到的,这也正是面向接口编程的优点。
页: [1]
查看完整版本: 抽象工厂模式