工厂模式
工厂模式是java中最常用的设计模式,主要是用来完成对象的创建,使得对象创建过程和对象使用过程分离。 简单来说是取消对象创建者和使用者的耦合,简化new 对象的创建。
优势 :对象的属性创建完整。
缺点: 创建的类太多容易使开发者混乱。
举例:去商场买手机不用关心手机的零件是如何组装的,只用关注手机牌子。
ps:接口是工厂模式的最终目,重点关注接口。
工厂模式分为:
1.简单工厂模式:
简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。
手机接口:
public interface Phone {void getBrand();
}
小米手机类
public class XiaoMi implements Phone {@Overridepublic void getBrand() {System.out.println("小米");}
}
华为手机类
public class HuaWei implements Phone {@Overridepublic void getBrand() {System.out.println("华为");}
}
手机factory类
public class PhoneFactory{public static Phone getPhone(String phone){if("小米".equals(phone)){return new Xiaomi();}else if ("华为".equals(phone)){return new Meizu();}else {return null;}}
}
Customer 消费者类
public class Customer {public static void main(String[] args) {PhoneFactory.getPhone("Xiaomi").getBrand();PhoneFactory.getPhone("Meizu").getBrand();}
}
2.工厂方法模式:
工厂方法模式定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。
手机接口:
public interface Phone {void getBrand();
}
手机工厂接口
public interface PhoneFactory {Phone getPhone();
}
小米手机类
public class XiaoMi implements Phone {@Overridepublic void getBrand() {System.out.println("小米");}
}
华为手机类
public class HuaWei implements Phone {@Overridepublic void getBrand() {System.out.println("华为");}
}
小米工厂类
public class XiaomiFactory implements PhoneFactory {@Overridepublic Phone getPhone() {return new Xiaomi();}
}
华为工厂类
public class HuaWeiFactory implements PhoneFactory {@Overridepublic Phone getPhone() {return new HuaWei();}
}
消费者类:
public class Customer {public static void main(String[] args) {Phone xiaomi = new XiaomiFactory().getPhone();Phone meizu = new MeizuFactory().getPhone();xiaomi.getBrand();meizu.getBrand();}
}
3.抽象工厂模式:
抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。