六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 10|回复: 0

抽象工厂模式

[复制链接]

升级  40.67%

33

主题

33

主题

33

主题

秀才

Rank: 2

积分
111
 楼主| 发表于 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的接口,使其复杂,那么就可以有多个子类实现这个接口,可是对于调用者来说,使看不到的,这也正是面向接口编程的优点。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表