您的位置:首页 > 其它

简单工厂模式

2015-09-09 18:37 239 查看
1.先来一个接口

package com.zhao.interfac;

public interface Output

{

// 接口里定义的成员变量只能是常量

int MAX_CACHE_LINE = 50;

// 接口里定义的普通方法只能是public的抽象方法

void out();

void getData(String msg);

// 在接口中定义默认方法,需要使用default修饰

default void print(String… msgs)

{

for (String msg : msgs)

{

System.out.println(msg);

}

}

// 在接口中定义默认方法,需要使用default修饰

default void test()

{

System.out.println(“默认的test()方法”);

}

// 在接口中定义类方法,需要使用static修饰

static String staticTest()

{

return “接口里的类方法”;

}

}

2.再就是Computer

package com.zhao.style;

import com.zhao.interfac.Output;

public class Computer {

private Output out;

public Computer (Output out){

this.out=out;

}

public void keyIn(String msg){

out.getData(msg);

}

public void print(){

out.out();

}

}

3.编写工厂类

package com.zhao.style;

import com.zhao.interfac.Output;

public class OutputFactory {

public Output getOutput(){

return new Printer();

}

public static void main(String[] args) {

OutputFactory of=new OutputFactory();

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

c.keyIn(“你好世界”);

c.keyIn(“nihao”);

c.print();

}

}

再次运行前面的OutputFactory.java程序,发现系统运行时已经改为BetterPrinter对象,而不再是原来的Printer对象。

通过这种方式,即可把所有生成Output对象的逻辑集中在OutputFactory工厂类中管理,而所有需要使用Output对象的类只需与Output对象的类只需与Output接口耦合,而不是与具体的实现类耦合。即使系统中很多类使用了Printer对象,只要OutputFactory类的getOutput()方法生成的Output对象是BetterPrinter对象,则它们全部都会改为使用BetterPrinter对象,而所有程序无须修改,只需要修改OutputFactory工厂类的getOutput()方法实现即可。

总结:

所谓设计模式,就是对经常出现的软件设计问题的成熟解决方案。很多人把设计模式想象成非常高深的概念,实际上设计模式仅仅是对待特定问题的一种惯性思维。

哈哈,大师的一句话告诉我:最好是经历过某种苦痛,或者正在经历一种苦痛,就会对设计模式有较深的感受。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: