工厂模式

take is cheap, I'll show you my code
1 简单工厂模式:有一个工厂类来制造产品

public interface Phone{
	void make();
}
public class HwPhone implements Phone{
	@Override
	public void make(){
		System.out.println("Hw Phone make");
	}
	public HwPhone(){
		this.make();
	}
}

public class Iphone implements Phone{
	@Overide 
	public void make(){
		System.out.println("iphone make");
	}
	public Iphone(){
		this.make();
	}
}

工厂类:

public class PhoneFactory{
	public Phone makePhone(String type){
		if(type.equals("hw")){
			return new HwPhone();
		}else if(type.equals("iphone")){
			return new Iphone();
		}
	}
}

// 测试
public class App{
	  public static void main(String[] args){
	  	PhoneFactory phoneFactory=new PhoneFactory();
	  	Phone hwPhone=phoneFactory.makePhone("hw");
	  	Phone iphone=phoneFactory.makePhone("iphone");
	  }
}

2 工厂方法模式:有多个派生工厂继承抽象工厂

public interface AbstractFactory{
	Phone makePhone();
}
public class HwFactory implements AbstractFactory{
	@Override
	public Phone makePhone(){
		return new HwPhone();
	}
}
public class IphoneFactory implements AbstractFactory{
	@Override
	public Phone makePhone(){
		return new Iphone();
	}
} 

//测试
public class App{
	public static void main(String[] args){
		AbstractFactory abstractFactory=new HwFactory();
		abstractFactory.makePhone();
		AbstractFactory abstractFactory2=new IphoneFactory();
		abstractFactory2.makePhone();
	}
}

3 抽象工厂模式 不只是生产一类产品,可以生产多类产品

public interface AbstractFactory{
	Phone makePhone();
	// 添加生产电脑
	PC makePc();
}
public interface PC{
	void makePC();
}
public class HwPC implements PC{
	@Override
	public void makePC(){
		System.out.println("make Hw PC");
	}
	public HwPC(){
		this.makePC();
	}
}
public class MAC implements PC{
	@Override
	public void makePC(){
		System.out.println("make MAC");
	}
	public MAC(){
		this.makePC();
	}
}


public class HwFactory implements AbstractFactory{
	@Override
	public Phone makePhone(){
		return new HwPhone();
	}
	@Override
	public PC makePC(){
		return new HwPC();
	}
}
public class IphoneFactory implements AbstractFactory{
	@Override
	public Phone makePhone(){
		return new Iphone();
	}
	@Override
	public PC makePC(){
		return new MAC();
	}
} 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值