Java使用设计模式中的工厂方法模式实例解析

网友投稿 223 2023-07-17


Java使用设计模式中的工厂方法模式实例解析

工厂方法模式的定义

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的http://好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

它包含了如下角色http://:

抽象产品(Product)

具体产品(ConcreteProduct)

抽象工厂(Factory)

具体工厂(ConcreteFactory)

模式的UML类图

实例

假设有三个笔芯,分别http://是红笔芯、蓝笔芯和黑笔芯。用户希望通过圆珠笔来明确笔芯的颜色。

模式的结构的描述与使用

1.抽象产品(Product): PenCore.java

public abstract class PenCore{

String color;

public abstract void writeWord(String s);

}

2.具体产品(ConcreteProduct)_1 : RedPenCore.java

public class RedPenCore extends PenCore{

RedPenCore(){

color="红色";

}

public void writeWord(String s){

System.out.println("写出"+color+"的字:"+s);

}

}

具体产品(ConcreteProduct)_2 : BluePenCore.java

public class BluePenCore extends PenCore{

BluePenCore(){

color="蓝色";

}

public void writeWord(String s){

System.out.println("写出"+color+"的字:"+s);

}

}

具体产品(ConcreteProduct)_3: BlackPenCore.java

public class BlackPenCore extends PenCore{

BlackPenCore(){

color="黑色";

}

public void writeWord(String s){

System.out.println("写出"+color+"的字:"+s);

}

}

3.构造者(Creator): BallPen.java

public abstract class BallPen{

BallPen(){

System.out.println("生产了一只装有"+getPenCore().color+"笔芯的圆珠笔");

}

public abstract PenCore getPenCore(); //工厂方法

}

4.具体构造者(ConcreteCreator):

RedBallPen.java

public class RedBallPen extends BallPen{

public PenCore getPenCore(){

return new RedPenCore();

}

}

BlueBallPen.java

public class BlueBallPen extends BanBdgjllPen{

public PenCore getPenCore(){

return new BluePenCore();

}

}

BlackBallPen.java

public class BlackBallPen extends BallPen{

public PenCore getPenCore(){

return new BlackPenCore();

}

}

5.应用 Application.java

public class Application{

public static void main(String args[]){

PenCore penCore;

BallPen ballPen=new BlueBallPen();

penCore=ballPen.getPenCore();

penCore.writeWord("你好,很高兴认识你");

ballPen=new RedBallPen();

penCore=ballPen.getPenCore();

penCore.writeWord("How are you");

ballPen=new BlackBallPen();

penCore=ballPen.getPenCore();

penCore.writeWord("nice to meet you");

}

}

总结

工厂方法模式属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责产品类被实例化这种细节,这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品

工厂方法模式的主要优点是增加新的产品类时无须修改现有系统,并封装了产品对象的创建细节,系统具有良好的灵活性和可扩展性;其缺点在于增加新产品的同时需要增加新的工厂,导致系统类的个数成对增加,在一定程度上增加了系统的复杂性


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:php调用自己java程序的方法详解
下一篇:深入理解Java 对象和类
相关文章

 发表评论

暂时没有评论,来抢沙发吧~