• Java设计模式--工厂方法模式


    一、工厂方法模式概述

    工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象。

    目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象。

    工厂方法模式包含四个部分:

    1.抽象产品:产品对象同一的基类,或者是同一的接口。

    2.具体的产品:各个不同的实例对象类

    3.抽象工厂:所有的子类工厂类的基类,或是同一的接口

    4.具体的工厂子类:负责每个不同的产品对象的实际创建

    二、案例如下:

    需求:创建Dog对象和Cat对象并分别调用它们的eat()方法。

    步骤A:先定义抽象产品

    public abstract class Animal {
    	public abstract void eat();
    }
    

    步骤B:定义各个不同的实例对象类

    public class Dog extends Animal {
    	@Override
    	public void eat() {
    		System.out.println("狗吃肉");
    	}
    }
    
    public class Cat extends Animal {
    	@Override
    	public void eat() {
    		System.out.println("猫吃鱼");
    	}
    }
    

    步骤C:定义抽象工厂

    public interface Factory {
    	public abstract Animal createAnimal();
    }
    

    步骤D:定义具体的工厂子类

    public class DogFactory implements Factory {
    	@Override
    	public Animal createAnimal() {
    		return new Dog();
    	}
    }
    
    public class CatFactory implements Factory{
    	@Override
    	public Animal createAnimal() {
    		return new Cat();
    	}
    }
    

    在main方法中进行测试:

    public class TestDemo {
    	public static void main(String[] args) {
    		Factory f;
    		f = new DogFactory();
    		Dog d = (Dog) f.createAnimal();
    		d.eat();
    		
    		System.out.println("---------------");
    		f = new CatFactory();
    		Cat c = (Cat) f.createAnimal();
    		c.eat();
    	}
    }
    

    测试结果如下:

    三、工厂方法模式优缺点:

    优点
    客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。
    缺点
    需要额外的编写代码,增加了工作量。
    Java新手,若有错误,欢迎指正!

  • 相关阅读:
    SQL SUBSTRING 函数
    JS复制DOM元素文字内容
    CSS中DIV只出现竖向滚动条且内容自动换行
    Windows下sc create命令行添加/创建/修改服务
    C# FTP删除文件以及文件夹
    涨薪20%!听听这位资深机器学习面试官的内心独白
    《Java从入门到放弃》JavaSE篇:程序结构
    迷茫的程序员
    技术与技术人员的价值
    GitChat·人工智能 | 除了深度学习,机器翻译还需要啥?
  • 原文地址:https://www.cnblogs.com/Java-biao/p/12577588.html
Copyright © 2020-2023  润新知