3.接口:工厂模式

  1. 简单工厂; 代码演示

      优点;       把调用者与创建者分离
      缺点;        对于增加新产品,不修改代码的话.是无法拓展的.违反了开闭原则(对拓展开放;对修改封闭)                                            
    

package com.helloworld.demo3;

interface Car{
void run();
}
class Audi implements Car{

@Override
public void run() {
	// TODO Auto-generated method stub
	System.out.println("奥迪在跑");
	
}

}
class BYD implements Car{

@Override
public void run() {
	// TODO Auto-generated method stub
	System.out.println("比亚迪在跑");
	
}

}

//工厂出现了
class CarFactory{

public static Car  getCar(String type) {
	if("安迪".equals(type))
	{
		return new Audi();
		
	}else if("比亚迪".equals(type))
	{
		return new BYD();
		
	}
	else {
	
	     return  null;
	}
}

}
public class Factory {

public static void main(String[] args) {
	Car car = CarFactory.getCar("安迪");
	car.run();
	
}

}

由于简单工厂中的局限性
于是提供了工厂模式方法;
public class Factory {

public static void main(String[] args) {

	Car car = new AudiFactory().getCar();
	car.run();
}

}
// 车接口
interface Car {
void run();
}
//奥迪车实现类
class Audi implements Car {

@Override
public void run() {
	// TODO Auto-generated method stub
	System.out.println("奥迪在跑");

}

}
//比亚迪车实现类
class BYD implements Car {

@Override
public void run() {
	// TODO Auto-generated method stub
	System.out.println("比亚迪在跑");

}

}
//工厂接口
interface Factory1 {
Car getCar();
}
//工厂实现类;
class AudiFactory implements Factory1 {

public Car getCar() {
	// TODO Auto-generated method stub   在这里创建你需要创建的车类型工厂.将此车作为返回值返回.
	return new Audi();

}

}

采用这种模式,你就可以添加车和工厂,而现有的就不用改动了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值