package interface_text;
interface Fruit{
public void eat();
}
class Apple implements Fruit{
@Override
public void eat() {
System.out.println("+++吃苹果");
}
}
class Orange implements Fruit{
@Override
public void eat() {
System.out.println("+++吃橙子");
}
}
class Factory{
public static Fruit getInstance(String className){
if("apple".equals(className)){
return new Apple();
}
if("orange".equals(className)){
return new Orange();
}
return null;
}
}
public class FactoryDesign {
public static void main(String[] args) {
Fruit f = Factory.getInstance("apple");
f.eat();
}
}
我们在设计程序时,用户只关心他需求什么,使用我们只需要给用户展示接口,如例子:用户只希望发送吃水果的请求,只提供水果名称,而不在乎你内部代码程序怎么实现,所以我们需要通过用户提供水果名称直接实现用户吃水果这一个方法,但是每次每个的用户需求不同,但是我们要求不改变每次的代码,所以我们需要进行工厂设计模式来满足要求,这样便于后期程序的维护(只要改变Factory中的代码即可,不需要改动客户端代码(main里的)),例子里就是一个最基础的工厂设计模式:
1.先创建一个Fruit接口(interface)
2.接着创建Factory,内部定义一个static方法来返回我们需要的对象(Apple,Orange)
3.再创建我们需要的水果对象,继承(implements) Fruit接口(即为Fruit的子类)
4.最后我们在主方法main()(实际开发的客户端)创建一个Fruit对象调用Factory.getInstance()方法来实现我们需要的水果对象(Apple,Orange)
这样我们就实现了最基本的java工厂设计模式的源代码了。
以上是我个人的总结,如果认为我说的不够具体,详情也可以看下面的视频: