设计模式(二)工厂模式

与代理模式不同,生产模式隐藏过程,只关注结果

简单工厂,工厂方法,抽象工厂


一,简单工厂模式

public interface Car {
	String getName();
}

public class Aodi implements Car{
	public String getName() {
		return "Aodi";
	}
}


public class Baoma implements Car{
	public String getName() {
		return "Baoma";
	}
}

public class SimpleFactory {
	public Car getCar(String name) {
		if(name.equals("Baoma")) {
			return new Baoma();
		}else if (name.equals("Aodi")) {
			return new Aodi();
		}else {
			return null;
		}
	}
}

public class Main {
public static void main(String[] args) {
	Car car = new SimpleFactory().getCar("Baoma");
	System.out.println(car.getName());
}
}


二,工厂模式

public interface Factory {
	Car getCar();
}

public class AodiFactory implements Factory{
	public Car getCar() {
		return new Aodi();
	}
}

public class BaomaFactory implements Factory{
	public Car getCar() {
		return new Baoma();
	}
}

public class Main {
public static void main(String[] args) {
	 Factory factory=new AodiFactory();
	 System.out.println(factory.getCar());
}
}


三,抽象工厂模式

public abstract class AbstractFactory {
	protected abstract Car getCar();
	
	public Car getCar(String name) {
		if(name.equals("Baoma")) {
			return new BaomaFactory().getCar();
		}else if (name.equals("Aodi")) {
			return new AodiFactory().getCar();
		}else {
			return null;
		}
	}
}

public class AodiFactory extends AbstractFactory{
	public Car getCar() {
		return new Aodi();
	}
}

public class BaomaFactory extends AbstractFactory{
	public Car getCar() {
		return new Baoma();
	}
}

public class DefaultFactory extends AbstractFactory{
	
	private AodiFactory defaultFactory=new AodiFactory();

	@Override
	protected Car getCar() {
		return defaultFactory.getCar();
	}

}

public class Main {
public static void main(String[] args) {
	DefaultFactory factory=new DefaultFactory();
	System.out.println(factory.getCar().getName());
	System.out.println(factory.getCar("Baoma").getName());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值