文章目录
  1. 工厂方法模式

工厂方法模式

  • 定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类
    Factory Method
  • 一个手机
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Phone {
public Phone() {
}
public void start() {
System.out.println("手机开机");
}
public void close() {
System.out.println("手机关机");
}
@Override public String toString() {
return "这是一部手机";
}
}
  • 手机工厂
1
2
3
4
5
6
7
8
9
10
11
12
13
public class PhoneFactory {
public PhoneFactory() {
}
public Phone CreatePhone() {
return new Phone();
}
public void SellPhone() {
}
}
  • 智能手机
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class SmartPhone extends Phone {
public SmartPhone() {
}
public void start() {
System.out.println("智能手机开机");
}
public void close() {
System.out.println("智能手机关机");
}
@Override public String toString() {
return "这是一部智能手机";
}
}
  • 智能手机工厂
1
2
3
4
5
6
7
8
9
10
public class SmartPhoneFactory extends PhoneFactory {
public SmartPhoneFactory() {
}
public Phone CreatePhone() {
return new SmartPhone();
}
}
  • 客户端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class App {
/**
* 工厂方法模式:定义一个用于创建对象的接口,子类决定具体实现哪一个类,类的实例化延迟到子类
* 缺点,为了拿到一个特定的SmartPhone,必须额外构造一个SmartPhoneFactory的,而这个类接下来可能用不到
* @param args
*/
public static void main(String[] args) {
designpattern.factorymethod.PhoneFactory factory=new SmartPhoneFactory();
Phone phone=factory.CreatePhone();
phone.start();
phone.close();
System.out.println(phone);
}
}
文章目录
  1. 工厂方法模式