学习JAVA程序设计模式之简单工厂模式

简单工厂模式

1.什么是简单工厂
个人理解就是定义一个类负责其它类的实例的创建,
2.简单实例
举个例子就是:一个工厂养一种金鱼,随着时代的发展,他还想养其他种类的鱼,这个时候就需要一个单独的类来养鱼,就需要用到简单工厂了
3.简单工厂模式结构图
在这里插入图片描述
工厂Factory依赖于抽象类Fish,具体产品GoldFish、CatFish继承抽象类\接口Fish
4.1简单分析
拿上述例子分析;
工厂:一个Factory
具体产品:GoldFish CatFish
抽象类\接口:Fish
4.2创建产品抽象类\接口

public interface Fish {
	
	void grow();//生长

}

4.3.1创建具体产品类

public class GoldFish implements Fish {
	@Override
	public void grow() {
		// TODO Auto-generated method stub
		System.out.println("金鱼在生长");
	}
}
public class CatFish implements Fish {
	@Override
	public void grow() {
		// TODO Auto-generated method stub
		System.out.println("鲇鱼在生长");
	}
}

4.3.2创建工厂

public class factory {
	
	Fish FeedFish(String type) {    //type代表用户的需求
		switch(type) {
		case"金鱼":		return new GoldFish();
		case"鲇鱼":		return new CatFish();
		}
		return null;
	}
	
}

5.客户端调用工厂类

public class simpleFactory{
	public static void main(String[] args) {
		factory factory = new factory();
		factory.produceFish("鲇鱼").grow();
		factory.produceFish("金鱼").grow();
	}
}

运行结果:

鲇鱼在生长
金鱼在生长

简单工厂运用了七大原则之中的三种
1.单一职责原则:每个模块只负责自己的事情,各个模块通过接口隔离
2.里氏替换原则:对外只暴露接口,依赖于抽象
3.迪米特法则:只需要知道接口即可
优点:
1.把具体产品的类型从客户端解耦出来
2.如果客户端修改具体产品的类名,客户端也不知道,符合面向接口编程的思想
缺点:
1.客户端需要记住的固定东西太多。switch语句中的case值对应的相关内容
2.具体产品若太多,本文中若果鱼的种类过多,switch中的case也就比较多
3.不可以扩展新的产品,养其它产品,就会修改原类,就违背了“开闭原则”
————————————————————————————————————————————
PS:本人第一次写,花了1个多小时。若有什么错误,希望大家能指出来,第一次学可能懂得还不多,错误难免,望见谅

发布了12 篇原创文章 · 获赞 13 · 访问量 1012

猜你喜欢

转载自blog.csdn.net/Dyqqqi/article/details/104607393