java工模,java工场模式——抽象工厂模式

java工厂模式——抽象工厂模式

package com.fsti.factory.abstractfactory;

public interface Output {

public final static Integer MAX_CACHE_LINE = 3;

void getData(String str);

void out();

}

package com.fsti.factory.abstractfactory;

public class Printer implements Output {

private String[] printData = new String[MAX_CACHE_LINE];

// 用以记录当前需打印的作业数

private int dataNum = 0;

public void getData(String str) {

if (dataNum >= MAX_CACHE_LINE) {

System.out.println("输出队列一满,添加失败");

} else {

printData[dataNum++] = str;

}

}

public void out() {

while (dataNum > 0) {

System.out.println("打印机打印:" + printData[0]);

// 把作业整体前移一位,并将剩下的作业数减一

System.arraycopy(printData, 1, printData, 0, --dataNum);

}

}

}

package com.fsti.factory.abstractfactory;

public class BetterPrinter implements Output {

private String[] printData = new String[MAX_CACHE_LINE];

// 用以记录当前需打印的作业数

private int dataNum = 0;

public void getData(String str) {

if (dataNum >= MAX_CACHE_LINE) {

System.out.println("输出队列一满,添加失败");

} else {

printData[dataNum++] = str;

}

}

public void out() {

while (dataNum > 0) {

System.out.println("Better打印机打印:" + printData[0]);

// 把作业整体前移一位,并将剩下的作业数减一

System.arraycopy(printData, 1, printData, 0, --dataNum);

}

}

}

package com.fsti.factory.abstractfactory;

public interface OutputFactory {

Output getOutput();

}

package com.fsti.factory.abstractfactory;

public class PrinterFactory implements OutputFactory {

public Output getOutput() {

return new Printer();

}

}

package com.fsti.factory.abstractfactory;

public class BetterPrinterFactory implements OutputFactory {

public Output getOutput() {

return new BetterPrinter();

}

}

package com.fsti.factory.abstractfactory;

public class OutputFactoryFactory {

public static OutputFactory getOutputFactory(String type){

if(type.equalsIgnoreCase("better")){

return new BetterPrinterFactory();

}else{

return new PrinterFactory();

}

}

}

package com.fsti.factory.abstractfactory;

public class Computer {

private Output out;

public Computer(Output out) {

this.out = out;

}

public void keyIn(String str) {

out.getData(str);

}

public void print() {

out.out();

}

public static void main(String[] args) {

// 使用OutputFactoryFactory来创建OutputFactory就避免了与具体工厂类的耦合。

OutputFactory of = OutputFactoryFactory.getOutputFactory("better");

// 将Output对象传入,创建Computer对象;

Computer c = new Computer(of.getOutput());

c.keyIn("工厂模式之");

c.keyIn("抽象工厂模式");

c.print();

}

}或者可以用properity文件来配置。package com.fsti.factory.abstractfactory;

import java.io.*;

import java.util.*;

public class ComputerProperties {

private Output out;

public ComputerProperties(Output out) {

this.out = out;

}

public void keyIn(String str) {

out.getData(str);

}

public void print() {

out.out();

}

public static void main(String[] args) {

Properties p = new Properties();

try {

File file = new File("src/com/fsti/factory/abstractfactory/factory.properties");

p.load(new FileInputStream(file));

} catch (IOException e) {

e.printStackTrace();

}

// 使用Printerfactory子类来创建OutputFactory;

OutputFactory of = OutputFactoryFactory.getOutputFactory(p.getProperty("factorybean"));

// 将Output对象传入,创建Computer对象;

Computer c = new Computer(of.getOutput());

c.keyIn("工厂模式之");

c.keyIn("抽象工厂模式");

c.print();

}

}factory.properties文件:

factorybean=better

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值