设计模式之简单工厂模式
来源:互联网 发布:域名的拼音 编辑:程序博客网 时间:2024/05/16 08:13
工厂模式,先上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
- 设计模式 之简单工厂+ 工厂模式
- 设计模式之简单工厂设计模式
- 设计模式之简单工厂模式,工厂模式,策略模式
- 设计模式 之 简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂.
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- YYKit 框架-很厉害
- 2723: 默认参数--求圆的面积
- Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景 & AtomicReference
- java面试宝典
- S3C6410开发(2)-构建开发环境
- 设计模式之简单工厂模式
- Bean Validation设置校验失败全局返回信息(续自定义JSR validation)
- PC端浏览器调用QQ
- mybatis中模糊查询的写法
- MyEclipse2017:开启codeView导致html被注入一些js代码引起的问题
- adb install 多设备
- 【重磅推荐】34张史上最全IT架构师技术知识图谱
- 关于java中the jar file C:\program files\java\jar7\lib\rt.jar has no ...
- 收获,不止SQL优化——抓住SQL的本质--第十章