设计模式之简单工厂模式

工厂模式,先上uml,摘录网上的图,自己画不出来。


我在学习工厂模式的时候,发现这个产品接口这有点出处,有的说在这使用接口,有的使用抽象类。我觉得两个都可以,简单说一下我对这两个的区别。

1、接口里面只能 定义接口,不能定义方法。而抽象类可以定义接口,也可以在里面写方法。在这里,我觉得,抽象类比接口的功能要多一点。

2、抽象类需要继承,而接口只需要实现,大家也都知道一个类可以实现多个接口,但是只能继承一个类,这也是两者的不同之处。

发表一下自己的见解,ok,下面步入正题。

--------------------------------------------------------------------------------------------我是分割线-----------------------------------------------------------------------------------------------

先定义一个接口/抽象类

public abstract class Car {


void add(){
chejia();
color();
fadongji();
}

void chejia(){
System.out.println("Car.chejia()");
}

abstract void color();

abstract void fadongji();

}
在定义两个产品。其中一个产品重写了chejia()方法,一个没有。

public class ACar extends Car {


@Override
void chejia() {
System.out.println("ACar.chejia()");
}


@Override
void color() {
System.out.println("ACar.color()");
}


@Override
void fadongji() {
System.out.println("ACar.fadongji()");
}

}


public class BCar extends Car {


@Override
void color() {
System.out.println("BCar.color()");
}


@Override
void fadongji() {
System.out.println("BCar.fadongji()");
}


}
在定义一个汽车工厂

public class CarFactory {


Car getCar(char car){
switch (car) {
case 'a':
return new ACar();
case 'b':
return new BCar();
default:
break;
}
return null;
}

}
最后是一个测试类

public class Main {


public static void main(String[] args) {
CarFactory carFactory = new CarFactory();
Car car = carFactory.getCar('a');
car.add();
System.out.println("--------------我的分割线--------------");
car = carFactory.getCar('b');
car.add();
}


}
下面显示结果
ACar.chejia()
ACar.color()
ACar.fadongji()
--------------我的分割线--------------
Car.chejia()
BCar.color()
BCar.fadongji()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值