Skip to content

Commit 5482f12

Browse files
author
yangqc
committed
抽象工厂方法
1 parent 8a64719 commit 5482f12

13 files changed

Lines changed: 150 additions & 0 deletions
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package designpattern.factory;
2+
3+
public class FactoryTest {
4+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package designpattern.factory;
2+
3+
public class MailSender implements Sender {
4+
@Override
5+
public void Send() {
6+
System.out.println("this is mail sender!");
7+
}
8+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package designpattern.factory;
2+
3+
public class SendFactory1 {
4+
5+
public Sender produce(String type) {
6+
switch (type) {
7+
case "mail":
8+
return new MailSender();
9+
case "sms":
10+
return new SmsSender();
11+
default:
12+
throw new IllegalArgumentException();
13+
14+
}
15+
}
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package designpattern.factory;
2+
3+
public class SendFactory2 {
4+
5+
public Sender produceMail() {
6+
return new MailSender();
7+
}
8+
9+
public Sender produceSms() {
10+
return new SmsSender();
11+
}
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package designpattern.factory;
2+
3+
/**
4+
* 静态工厂方法
5+
*/
6+
public class SendFactory3 {
7+
public static Sender produceMail() {
8+
return new MailSender();
9+
}
10+
11+
public static Sender produceSms() {
12+
return new SmsSender();
13+
}
14+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package designpattern.factory;
2+
3+
public interface Sender {
4+
void Send();
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package designpattern.factory;
2+
3+
public class SmsSender implements Sender {
4+
5+
@Override
6+
public void Send() {
7+
System.out.println("this is SmsSender!");
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package designpattern.factory.abstractfactory;
2+
3+
4+
import designpattern.factory.Sender;
5+
6+
public interface Provider {
7+
public Sender produce();
8+
}
9+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package designpattern.factory.abstractfactory;
2+
3+
import designpattern.factory.MailSender;
4+
import designpattern.factory.Sender;
5+
6+
public class SendMailFactory implements Provider {
7+
@Override
8+
public Sender produce() {
9+
return new MailSender();
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package designpattern.factory.abstractfactory;
2+
3+
import designpattern.factory.Sender;
4+
import designpattern.factory.SmsSender;
5+
6+
public class SendSmsFactory implements Provider {
7+
@Override
8+
public Sender produce() {
9+
return new SmsSender();
10+
}
11+
}

0 commit comments

Comments
 (0)