您的位置:首页 > 编程语言 > Java开发

Java设计模式之抽象工厂模式

2013-03-26 01:47 597 查看
抽象工厂模式:

①,抽象工厂角色

②,具体工厂角色

③,抽象产品角色

④,具体产品角色

----------------------------------------------------------------------------------------------------------------------

①,抽象工厂角色 (AbstractFactory.java)
抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。

②,具体工厂角色(Factory1.java---国产,
Factory2.java--进口) 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。

③,抽象产品角色 (Move.java)
抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

④,具体产品角色(BUS1.java,
Plan1.java, BUS2.java,Plan2.java) 抽象模式所创建的具体实例对象

抽象工厂角色
(AbstractFactory.java) 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。


package
abstract_.factory;

//抽象工厂角色

public interface AbstractFactory {

//创建一Plan

public abstract Plan createPlan();

//创建一个BUS

public abstract Bus createBUS();

}

具体工厂角色(Factory1.java---国产, Factory2.java--进口)
具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象


package
abstract_.factory;

public class Factory1 implements AbstractFactory{

@Override

public Plan createPlan() {

// TODO Auto-generated method stub

return new Plan1();

}

@Override

public Bus createBUS() {

// TODO Auto-generated method stub

return new BUS1();

}

}

package
abstract_.factory;

public class Factory2 implements AbstractFactory{

@Override

public Plan createPlan() {

// TODO Auto-generated method stub

return new Plan2();

}

@Override

public Bus createBUS() {

// TODO Auto-generated method stub

return new BUS2();

}

}

抽象产品角色
(Move.java) 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。


package
abstract_.factory;

public interface Move {

public void run();

}

具体产品角色(BUS1.java, Plan1.java, BUS2.java,Plan2.java)
抽象模式所创建的具体实例对象


package
abstract_.factory;

public class BUS1 extends Bus {

public void run(){

System.out.println("国产 BUS running ");

}

}

package
abstract_.factory;

public class BUS2 extends Bus{

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println(" 进口 BUS running");

}

}

package
abstract_.factory;

public class Plan1 extends Plan {

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("国产 Plan planing");

}

}

package
abstract_.factory;

public class Plan2 extends Plan{

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println("进口 Plan running");

}

}

-----------------------

package
abstract_.factory;

public abstract class Bus implements Move{

public abstract void run();

}

-----------------------

test:

package
abstract_.factory;

public class Test {

public static void main(String[] args) {

AbstractFactory af2 = new Factory2();

AbstractFactory af1 = new Factory1();

Bus b1 = af1.createBUS();

Plan p1 = af1.createPlan();

b1.run();

p1.run();

Bus b2 = af2.createBUS();

Plan p2 = af2.createPlan();

b2.run();

p2.run();

}

}

result:

国产
BUS running

国产 Plan planing

进口 BUS running

进口 Plan running
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: