java设计模式2————工厂模式
1、工厂模式介绍:
1.1、实现了创建者与调用者的分离
1.2、详细分类:
简单工厂模式
工厂方法模式
抽象工厂模式
1.3、所遵循的OOP原则:
开闭原则:对扩展开放,对修改关闭
依赖倒转原则:面向接口编程
迪米特法则:只与你直接的朋友进行通信,而避免与陌生人进行通信。
1.4、核心本质
实例化对象,不使用new,用工厂方法代替
将调用者与我们的实现类解耦
1.5、三种模式
2、简单工厂模式
2.1、先建立汽车抽象类
package com.xgp.company.第二种_工厂模式.简单工厂模式;
public interface Car {
void name();
}
2.2、制造车
制造“五凌”车
package com.xgp.company.第二种_工厂模式.简单工厂模式;
public class WuLing implements Car {
@Override
public void name() {
System.out.println("五凌宏观");
}
}
制造“特斯拉”车
package com.xgp.company.第二种_工厂模式.简单工厂模式;
public class Tesla implements Car {
@Override
public void name() {
System.out.println("特斯拉");
}
}
2.3、创建汽车工厂(两种方式工厂制造对像)
package com.xgp.company.第二种_工厂模式.简单工厂模式;
/**
* 简单工厂模式,又成为静态工厂模式
* 弊端:增加一个新产品时,如果你不修改代码,做不到
*/
/**汽车工厂
*/
public class CarFactory {
public static Car getCar(String car) {
if("五凌".equals(car)) return new WuLing();
if("特斯拉".equals(car)) return new Tesla();
return null;
}
/**
第二种方式
@return
*/
public static Car getWuLing() {
return new WuLing();
}
public static Car getTesla() {
return new Tesla();
}
}
2.4、建立买车类(传统方法创建对象被注释了和通过工厂创建对象)
package com.xgp.company.第二种_工厂模式.简单工厂模式;
/**买车
/
public class Consumer {
/ //*
传统的方式
@param args
//
public static void main(String[] args) {
//弊端:需要了解接口和所有的实现类
Car car1 = new WuLing();
Car car2 = new Tesla();
car1.name();
car2.name();
}*/
/**简单工厂模式
@param args
*/
public static void main(String[] args) {
Car car1 = CarFactory.getCar("五凌");
Car car2 = CarFactory.getCar("特斯拉");
car1.name();
car2.name();
}</