工厂模式

java设计模式之工厂模式

工厂模式(Factory):

工厂模式定义:提供创建对象的接口


工厂模式是我们最常用的模式了,著名的 Jive 论坛 ,就大量使用了工厂模式,工厂模式在
Java 程序系统可以说是随处可见。

工厂模式就相当于创建对象时候实例化对象的new,创建对象的时候可以考虑使用工厂模式。java面向对象的思想:封装和分派,也告诉了我们将尽可能的长的代码切割成小段,然后封装起来,这样可以减少代码段之间的耦合性,需要修改的时候就不会牵一发而动全身。

工厂模式优点:

给系统带来更大的可拓展性和更少的修改量。把父类和子类都统一起来,在工厂里面实例化对象。


把实例化对象的过程封装起来,就可以减少修改错误的机会和地方。

工厂模式图例:




Sample 父类 生出SampleA 和 SampleB子类,都封装到工厂里,然后就可以获得对象了。

然后我自己用也设计了一个工厂模式去测试(我用电脑作为程序内容,以下是主类):
package 工厂模式;

public class Test {
	public static void main(String[] args) {
		Computer deskComputer = Factory.getComputer("DeskComputer", "华硕", "16G");
		Computer nodebookComputer = Factory.getComputer("NodebookComputer", "联想", "8G");
		Computer pad = Factory.getComputer("Pad", "苹果", "4G");
		
		deskComputer.run();
		nodebookComputer.run();
		pad.run();
		
		Computer comTest = Factory.getComputer("phone", "宏碁", "2G");
	}
}

Computer是抽象父类

package 工厂模式;

public abstract class Computer {
	public String type;
	public String size;
	
	public abstract void run();
}

下面有3个继承父类的子类:

package 工厂模式;

public class DeskComputer extends Computer{

	public DeskComputer(String type,String size){
		super.size = size;
		super.type = type;
	}
	public void run() {//子类重写父类构造方法,面向对象多态的体现
		System.out.println("DeskComputer是"+type+"牌子"+size+"体验很好");
	}

}
package 工厂模式;

public class NodebookComputer extends Computer{

	public NodebookComputer(String type,String size){
		super.size = size;
		super.type = type;
	}
	public void run() {//子类重写父类构造方法,面向对象多态的体现
		System.out.println("NodebookComputer是"+type+"牌子"+size+"运行不错");
	}

}
package 工厂模式;

public class Pad extends Computer{
	
	public Pad(String type,String size){
		super.size = size;
		super.type = type;
	}
	public void run() {
		System.out.println("Pad是"+type+"牌子"+size+"轻巧方便");
	}
}

工厂模式代码实现:


最后一个是工厂类,工厂类用来创建对象(实现实例化对象的封装):

package 工厂模式;

public class Factory {
	public static Computer getComputer(String model,String type,String size){
		Computer com = null;
		if(model.equals("DeskComputer")){
			com = new DeskComputer(type,size);
		}else if(model.equals("NodebookComputer")){
			com = new NodebookComputer(type,size);
		}else if(model.equals("Pad")){
			com = new Pad(type,size);
		}else{
			System.out.println("输入类型不正确,工厂无法创建对象......");
		}
		return com;
	}
}

下面是测试结果:

工厂模式_第1张图片


你可能感兴趣的:(java,java设计模式,工厂模式,实例化对象的封装)