GOF23 设计模式 之工厂模式

工厂模式本质:实例化对象,工厂方法代替new操作;将实现类和创建对象统一管理和控制,将调用者和实现类解耦

工厂模式分为了三种

1, 简单工厂模式: 最常用

对于新增产品 要修改代码

2,工厂方法模式:

新增产品不用修改代码 ,代码复杂度高

3, 抽象工厂模式:

可以增加产品族,进行产品之间的搭配 ,一般用的少, 框架可能会用到

***************************

代码实现:

1, 简单工厂模式:

// 接口类 Car
package simpleFactory;

public interface Car {
	void run();
}


// 实现类1  Audi
package simpleFactory;

public class Audi  implements Car {
	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("开着奥迪");
	}
}

// 实现类2  Byd 
package simpleFactory;

public class Byd  implements Car{
	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("开着比亚迪");
	}

}


// 工厂类  CarFactory
package simpleFactory;

public class CarFactory {
	
	public static  Car makeCar(String type) {
		if(("audi").equals(type)) {
			return new Audi();
		}else if(("byd").equals(type)) {
			return new Byd();
		} 
		return new Audi();	
	}
}



// 运行代码 
package simpleFactory;

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Car c1=CarFactory.makeCar("audi");
		Car c2=CarFactory.makeCar("byd");
		
		c1.run();
		c2.run();

	}

}

2,工厂方法模式:

// 接口类 Car
package simpleFactory;

public interface Car {
	void run();
}


// 实现类1  Audi
package simpleFactory;

public class Audi  implements Car {
	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("开着奥迪");
	}
}
// 实现类工厂类1  AudiFactory
package simpleFactory;

public class AudiFactory implements CarFactory {

	@Override
	public Car makeCar() {
		// TODO Auto-generated method stub
		return new Audi();
	}
	

}


// 实现类2  Byd 
package simpleFactory;

public class Byd  implements Car{
	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("开着比亚迪");
	}

}
// 实现类工厂类2  BydFactory
package simpleFactory;

public class BydFactory implements CarFactory  {

	@Override
	public Car makeCar() {
		// TODO Auto-generated method stub
		return new Byd();
	}

}




// 工厂接口类  CarFactory
package simpleFactory;

public interface CarFactory {
	Car makeCar();
}



// 运行代码 
package simpleFactory;


public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Car c1= new AudiFactory().makeCar();
		Car c2= new BydFactory().makeCar();
		
		c1.run();
		c2.run();

	}

}

3, 抽象工厂模式:

代码太复杂了 就不一一叙述了

发布了189 篇原创文章 · 获赞 10 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/wangrong111222/article/details/104089359