java设计模式之工厂方法模式

    xiaoxiao2021-03-26  18

    工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

    烤鱼店之工厂模式类图: FactoryFish中的Fish实例化延迟到子类NianYuFactory,JiYuFactory中来实例化。这是工厂方法模式和简单工厂模式的区别。

    Fish类代码实现:

    public class Fish { String name = "Unknow name"; }

    NianYu类代码实现:

    public class NianYu extends Fish{ public NianYu() { // TODO Auto-generated constructor stub name = "鲶鱼"; System.out.println("一条烤"+name); } }

    JiYu类代码实现:

    public class JiYu extends Fish{ public JiYu() { // TODO Auto-generated constructor stub name = "鲫鱼"; System.out.println("一条烤"+name); } }

    FactoryFish类代码实现:

    public abstract class FactoryFish { public abstract Fish createFish(); }

    NianYuFactory类代码实现:

    public class NianYuFactory extends FactoryFish{ @Override public Fish createFish() { // TODO Auto-generated method stub return new NianYu(); } }

    JiYuFactory类代码实现:

    public class JiYuFactory extends FactoryFish{ @Override public Fish createFish() { // TODO Auto-generated method stub return new JiYu(); } }

    KaoYu类代码实现:

    public class KaoYu { FactoryFish factoryFish; public KaoYu(FactoryFish factoryFish){ this.factoryFish =factoryFish; } public void orderFish(){ factoryFish.createFish(); } }

    FishTest类代码实现:

    public class FishTest { public static void main(String[] args){ FactoryFish factoryFish = new JiYuFactory(); KaoYu kaoYu = new KaoYu(factoryFish); kaoYu.orderFish(); FactoryFish factoryFish2 = new NianYuFactory(); KaoYu kaoYu2 = new KaoYu(factoryFish2); kaoYu2.orderFish(); } }

    运行结果:

    一条烤鲫鱼 一条烤鲶鱼
    转载请注明原文地址: https://ju.6miu.com/read-659133.html

    最新回复(0)