工厂设计模式

1、简单工厂
package com.study.factory;
interface IAnimal {
	public abstract void showKind();
}
class Dog implements IAnimal {
	public void showKind() {
		System.out.println("Dog");
	}
}
class Tiger implements IAnimal {
	public void showKind() {
		System.out.println("Tiger");
	}
}
class AnimalFactory {
	public IAnimal createAnimal(int choose) {
		IAnimal animal = null;
		if (choose==1) {
			animal = new Dog();
		}else{
			animal = new Tiger();
		}
		return animal;
	}
}
public class Animal {
	public static void main(String[] args) {
		IAnimal animal = new AnimalFactory().createAnimal(0);
		animal.showKind();
	}
}

复用性:该程序中将DogTiger继承IAnimal接口,该接口中抽象出了Animal的共性方法,提高复用性。

维护性:各个工厂方法互不影响,如需增加其他工厂方法,可直接继承IAnimal,在AnimalFactory中增加一组判断即可。

2.工厂方法
package com.study.factory;

interface IAnimal {
	public abstract void showKind();
}
class Dog implements IAnimal {
	public void showKind() {
		System.out.println("Dog");
	}
}
class Tiger implements IAnimal {
	public void showKind() {
		System.out.println("Tiger");
	}
}
interface IAnimalFactory {
	IAnimal createAnimal();
}
class DogFactrory implements IAnimalFactory {
	public IAnimal createAnimal() {
		return new Dog();
	}
}
class TigerFactory implements IAnimalFactory {
	public IAnimal createAnimal() {
		return new Tiger();
	}
}
public class Animal {
	public static void main(String[] args) {
		IAnimalFactory animalFactory = new DogFactrory();
		animalFactory.createAnimal().showKind();
	}
}

复用性:该工厂接口中有一个创建对象的操作,由子类进行实现,若后续有相同类型的对象,可以直接实现该接口,实现create方法,返回对象。

维护性:各个工厂方法独立,方便修改。同时增加新功能时只需新建一个工厂实现Factory,即可返回对象。在具体要生产哪个工厂时,将判断移到了客户端,降低了耦合性。


比较简单工厂和工厂方法模式的特点:

简单工厂模式:专门定义一个工厂类负责创建其他类的实例。工厂类中包含了必要的逻辑,根据客户端需要的条件动态实例化相关类,部分满足开闭原则。增加新功能是工厂类内部需要修改。

工厂方法模式:创建对象的接口,让子类去决定具体实例化的对象,把简单的内部逻辑移到了客户端,工厂方法完全满足开闭原则,可维护性更强,又保持了封装对象创建过程的优点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值