java设计模式之工厂模式

概述

  • 工厂:就是生产特定产品的
  • 实现方式:

         1>创建一个抽象工厂类,声明抽象方法

         2>写一个具体的抽象工厂类的子类,由子类负责对象的创建

  • 优点:后期维护容易,增强了系统的扩展性
  • 缺点:需要额外的编写代码,增加了工作量
//抽象动物工厂
public abstract class AnimalFactory { public abstract Animal createAnimal(); //public abstract Animal newAnimal(); }
复制代码
复制代码
//狗工厂
public class DogFactory extends AnimalFactory{ @Override public Animal createAnimal() { // TODO Auto-generated method stub Dog dog = new Dog(); dog.setName("小黑"); dog.setColor("Black"); //....... return dog; } }
复制代码
复制代码
复制代码
复制代码
//猪工厂
public class PigFactory extends AnimalFactory{ @Override public Animal createAnimal() { // TODO Auto-generated method stub Pig pig = new Pig(); return pig; } }
复制代码
复制代码
复制代码
复制代码
 //使用工厂方法模式创建对象
        DogFactory dogFactory = new DogFactory();
        Animal dog1 = dogFactory.createAnimal();
        dog1.eat();
        
        PigFactory pigFactory = new PigFactory();
        Animal pig2 = pigFactory.createAnimal();
        pig2.eat();
复制代码
复制代码

简单工厂模式:

概述

  • 又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例
  • 特点:一个类负责很多对象的创建
复制代码
复制代码
public class AnimalFactory {
    /*public static Dog createDog(){
        Dog dog = new Dog();
        return dog;
    }*/
    
    //返回值可以是抽象类,接口,具体的类
    public static Animal createDog(){
        Dog dog = new Dog();
        return dog;
    }    
    public static Pig createPig(){
        Pig pig = new Pig();
        return pig;
    }
}
复制代码
复制代码
posted @   expworld  阅读(135)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示