设计模式的简单工厂模式实例
程序员文章站
2024-01-20 13:44:28
...
例子:选用一个单位用车的例子,单位中有各种车,跑车,巴士,货车等等。设计中加入抽象层次Auto类,以降低耦合度。各元素如下:
产品接口:Auto此接口用于描述各种具体的产品。
具体产品:Car,Bus,Truck。
静态工厂类:StaticFactory类中具有静态的工厂方法。
客户类:Client类调用静态工厂生产各种Auto的实现对象。
代码如下:
Auto.java
public abstract class Auto{
private String name;//车型名称
abstract public void run();//抽象的工作方法
public String getName(){ //获得车型名称的方法
return name;
}
public void setName(String name){ //设置车型的方法
this.name=name;
}
}
以下是Auto的三个实现类:
Car.java
public class Car extends Auto{
public Car(){
this.setName("轿车");
}
@Override
public void run(){
System.out.println("启动"+this.getName());
}
}
Bus.java
public class Bus extends Auto{
public Bus(){
this.setName("巴士");
}
@Override
public void run(){
System.out.println("启动"+this.getName());
}
}
Truck.java
public class Truck extends Auto{
public Truck(){
this.setName("卡车");
}
@Override
public void run(){
System.out.println("启动"+this.getName());
}
}
简单工厂模式的静态工厂类:
StaticFactory.java
public class StaticFactory{
public static Auto createAuto(int autoId){
switch(autoId){
case 1:
return new Car();
case 2:
return new Bus();
case 3:
return new Truck();
default:
throw new RuntimeException("没有这种车类型");
}
}
}
下面是客户端的程序:
Client.java
public class Client{
public static void main(String[] args){
Auto auto1=StaticFactory.createAuto(1);
auto1.run();
Auto auto2=StaticFactory.createAuto(2);
auto2.run();
Auto auto3=StaticFactory.createAuto(3);
auto3.run();
}
}
执行Client.java后结果为:
启动轿车
启动巴士
启动卡车
转载于:https://blog.51cto.com/secondscript/1561426