抽象工厂模式

来源:互联网 发布:数据库系统概念 6 pdf 编辑:程序博客网 时间:2024/05/20 21:59

接口类:

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的接口,使其复杂,那么就可以有多个子类实现这个接口,可是对于调用者来说,使看不到的,这也正是面向接口编程的优点。

原创粉丝点击