简单工厂模式
通过phoneFactory创建手机对象【实现简单,不易扩展】
- 手机类
package SimpleFactory;
//手机
public interface Phone {
void call();
void sendMessage();
}
package SimpleFactory;
//苹果手机
public class Iphone implements Phone {
@Override
public void call() {
System.out.println("语音通话【iPhone】");
}
@Override
public void sendMessage() {
System.out.println("短信发送【iphone】");
}
}
package SimpleFactory;
//小米手机
public class MiPhone implements Phone {
@Override
public void call() {
System.out.println("语音通话【MiPhone】");
}
@Override
public void sendMessage() {
System.out.println("短信发送【MiPhone】");
}
}
- 工厂
package SimpleFactory;
/**
* 简单工厂模式
*/
public class PhoneFactory {
public static Phone productPhone(String phoneName){
if(("小米").equals(phoneName))
return new MiPhone();
if ("苹果".equals(phoneName))
return new Iphone();
return null;
}
}
工厂方法模式
容易扩展,但是实现相对于简单工厂模式繁琐
- 手机工厂接口
package SimpleFactory;
//工厂方法模式
public interface PhoneFactoryWorkMethod {
Phone productPhone();
}
- 小米手机工厂
package SimpleFactory;
//小米手机工厂
public class MiPhoneFactory implements PhoneFactoryWorkMethod {
@Override
public Phone productPhone() {
return new MiPhone();
}
}
- 苹果手机工厂
package SimpleFactory;
//苹果手机工厂
public class IPhoneFactory implements PhoneFactoryWorkMethod{
@Override
public Phone productPhone() {
return new Iphone();
}
}
抽象工厂模式
用来生产不同产品族的全部产品
- 手机类
和简单工厂模式使用同一手机类和接口,不再展示
- 耳机类
package SimpleFactory;
//耳机
public interface HeadSet {
void bluetooth();
}
package SimpleFactory;
//苹果耳机
public class IHeadSet implements HeadSet {
@Override
public void bluetooth() {
System.out.println("IHeadSet[苹果蓝牙耳机]");
}
}
package SimpleFactory;
//小米耳机
public class MiHeadSet implements HeadSet{
@Override
public void bluetooth() {
System.out.println("MiHeadSet[小米蓝牙耳机]");
}
}
- 工厂接口
package SimpleFactory;
//工厂
public interface Factory {
//生产手机
Phone productPhone();
//生产耳机
HeadSet productHeadSet();
}
- 小米工厂
package SimpleFactory;
//小米工厂
public class MiFactory implements Factory{
@Override
public Phone productPhone() {
return new MiPhone();
}
@Override
public HeadSet productHeadSet() {
return new MiHeadSet();
}
}
- 苹果工厂
package SimpleFactory;
//苹果工厂
public class IFactory implements Factory {
//生产苹果手机
@Override
public Phone productPhone() {
return new Iphone();
}
//生产苹果耳机
@Override
public HeadSet productHeadSet() {
return new IHeadSet();
}
}