java开发的23种设计模式(一)

本文介绍了Java中的工厂方法模式,并详细解析了三种不同的实现方式:普通工厂模式、多方法工厂模式及静态方法工厂模式。通过具体示例展示了如何创建不同类型的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章算是小明的第一篇技术博客了,写技术之前先立个flag吧——每日一更,风雨无阻。

小明写技术博客的原因有二:一则是为了给自己建立一个知识库,方便日后查阅;二则是在学习的路上依靠着诸位大牛的技术博客解决了不少问题,故而心怀感    激,也想为后来的学习者提供些许帮助。

由于最近感觉自己代码过于繁琐,为求精简,所以开始着手研究java的23种设计模式,于是也就从这里开始小明的技术博客之路吧~~~~


java的23中设计模式之——工厂方法模式(Factory Method)

1、普通工厂模式

使用一个工厂类,对于实现同一接口的类进行实例化。例:

//首先  创建接口Pet  包含public方法eat();
public interface Pet {
	public void eat();
}

//之后,创建Dog类实现Pet接口。
public class Dog implements Pet{

	@Override
	public void eat() {
		System.out.println("狗狗吃骨头");
	}
	
}

//再创建Cat类也实现Pet接口。
public class Cat implements Pet{

    @Override
    public void eat() {
        System.out.println("喵喵吃小鱼");
    }
    
}

//最后创建工厂类,根据输入的字符串返回相应类型的实例化对象。
public class PetFactory {
    public Pet produce(String type)
    {
        if(type.equals("Dog"))
        {
            return new Dog();
        }
        else if(type.equals("Cat"))
        {
            return new Cat();
        }
        else
        {
            System.out.println("该类型不存在");
            return null;
        }
    }
}

//接下来我们通过测试类来进行测试
public class Test {
    public static void main(String[] args) {
        
        //通过工厂类创建Pet实例
        PetFactory petFactory = new PetFactory();
        Pet pet = petFactory.produce("Dog");
        //调用对象的eat()方法
        pet.eat();
    }

}

//控制台输出结果:狗狗吃骨头

2、多方法工厂模式

该模式对第一种工厂模式进行了优化,工厂类内部针对不同类提供不同方法进行实例化。例:

//实体类如上,这里只写出工厂类以及测试类
public class PetFactory_2 {
	
	//方法一  返回一个Dog对象
	public Pet produceDog()
	{
		return new Dog();
	}
	//方法二 返回一个Cat对象
	public Pet produceCat()
	{
		return new Cat();
	}
}
//依然通过测试类来进行测试
public class Test {
    public static void main(String[] args) {
        
        //通过工厂类创建Pet实例
        PetFactory_2 petFactory = new PetFactory_2();
        Pet pet = petFactory.produceDog();
        //调用对象的eat()方法
        pet.eat();
    }

}
//控制台结果不变: 狗狗吃骨头
使用这种方法的好处:使用工厂类创建对象时,无需传入方法,避免了参数错误;使用IDE进行开发时,可以通过代码提示功能看到方法名称,更加方便使用。

3、静态方法工厂模式

该模式对上一种工厂模式进行优化,把工厂类内部方法设置为静态方法。例:

//相对于上一种模式来说,只需要将内部方法设置为静态方法。
public class PetFactory_3 {
	
	//方法一 返回一个Dog对象
	public static Pet produceDog()
	{
		return new Dog();
	}
	
	//方法二 返回一个Cat对象
	public static Pet produceCat()
	{
		return new Cat();
	}
}

//依然通过测试类进行测试
public class Test {
    public static void main(String[] args) {
        
        //通过工厂类创建Pet实例
        Pet pet = PetFactory_3.produceDog();
        //调用对象的eat()方法
        pet.eat();
    }

}

//控制台结果依然不变: 狗狗吃骨头

很明显可以看出第三种方式的优势,不需要创建工厂实例,由于工厂内部方法被static修饰,所以可以直接通过类名进行调用。

综上所述:相对于前两种方式来说,第三种方式更易使用。所以在开发过程中,一般使用第三种方式,即静态方法工厂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值