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

java设计模式——工厂模式一

2017-04-22 15:22 274 查看

java工厂方法模式

工厂方法模式所包含的成员:

(1)抽象产品(product):抽象类或者接口,用于定义具体产品必须实现的方法

(2)具体产品(concreteproduct):如果product是一个抽象类,那么具体产品是product的子类;如果product是一个接口,那么具体产品是实现该接口的类。

注:一般情况下,一个抽象产品是一个抽象类,而具体产品是派生出的众多继承该抽象产品类的不同子类

(3)构造者(creator):一个接口或抽象类。构造者负责定义一个被称为工厂方法的抽象方法(该方法返回抽象产品的一个对象引用——这一点也体现了构造者和抽象产品之间的关系:构造者依赖于抽象产品)

(4)具体构造者(concretecreator):如果构造者是抽象类,具体构造者类就是构造者类的众多不同的子类;如果构造者是接口,具体构造者就是众多实现该接口的不同子类。具体构造者重写工厂方法,使该方法返回具体产品的实例。

工厂方法模式的示例代码:

public abstract class pencore {         //抽象产品类,给出要实现的方法
String color;
public abstract void writeword(String color);
}

public class redpencore extends pencore{        //具体产品类,重写抽象产品类中的方法,实现子类具体的功能以满足客户的不同需求
redpencore()
{
color="红色";
}
public void writeword(String neirong) {
System.out.println("写出"+color+"的字:"+neirong);
}
}

public class blackpencore extends pencore{
public blackpencore()
{
color="黑色";
}
public void writeword(String neirong)
{
System.out.println("写出"+color+"的字:"+neirong);
}
}

public abstract class pencorecreator {      //构造者类
public abstract pencore getpencore();       //抽象方法,返回抽象产品的对象引用(可见具体产品与具体创造者类是一一对应的)
//一个具体创造者对应能生产一种具体产品(如红笔芯制造者redcorecreator能对应生产(返回对象引用)具体红笔芯产品redpencore)
}

public class redcorecreator extends pencorecreator{     //具体构造者类
public pencore getpencore()
{
return new redpencore();            // 一个具体创造者对应能生产一种具体产品(如红笔芯制造者redcorecreator能对应生产(返回对象引用)具体红笔芯产品redpencore)
}
}

public class blackcorecreator extends pencorecreator{
public pencore getpencore()             //函数头的返回值类型为抽象产品类的对象(pencore),但是实际返回的确是具体产品blackpencore
//因为可以将基类对象赋值给子类对象
{
return new blackpencore();              //返回具体产品类的对象引用
}
}

public class ballpen {          //圆珠笔类
pencore core;
public void userpencore(pencore core)       //通过该方法选择使用哪一个产品(参数列表中传递进来一个抽象产品的对象引用)
{
this.core=core;
}
public void write(String s)                //通过该方法调用具体产品的writeword方法
{
core.writeword(s);
}
}

public class test {
public static void main(String[] args) {
pencore core;
pencorecreator creator;
ballpen b1=new ballpen();
creator=new redcorecreator();
core=creator.getpencore();
b1.userpencore(core);
b1.write("我开发了红笔");
creator=new blackcorecreator();
core=creator.getpencore();
b1.userpencore(core);
b1.write("我开发了黑笔");
}
}


关于工厂方法模式个人总结:

(1)一般情况下工厂方法模式中具体构造者与具体产品一一对应,一个具体构造者生产一个具体产品。

(2)工厂方法模式非常类似于现实生活中的生产模式:最上级下达一个开始生产的命令,下级就开始按照自己的生产方法和目标生产不同的产品,供不同的用户使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java