package com.tanoak.create.factory.simple.demo;
/**
* @author tanoak@qq.com
* @date 2018/8/1 22:31
* @Desc
*/
public class Apple {
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Apple(String name) {
this.name = name;
}
@Override
public String toString() {
return "Apple{" +
"name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
Apple a = new Apple("红色的苹果") ;
System.out.println(a.toString());
}
}
package com.tanoak.create.factory.simple.demo;
/**
* @author tanoak@qq.com
* @Desc
*/
public class Banana {
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Banana(String name) {
this.name = name;
}
@Override
public String toString() {
return "Banana{" +
"name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
Apple a = new Apple("红色的苹果") ;
Banana b = new Banana("香蕉") ;
System.out.println(a.toString());
}
}
1. 创建水果接口
package com.tanoak.create.factory.simple;
/**
* @author tanoak@qq.com
* @Desc
*/
public interface IFruit {
void name();
}
1. 创建工厂类并实现水果接口
package com.tanoak.create.factory.simple;
/**
* @author tanoak@qq.com
* @Desc
*/
public class FruitFactory {
private FruitFactory(){}
public static IFruit createProduct(String name){//生产水果
String apple = "apple" ;
String banana = "banana" ;
if (name == null) {
return null;
}
if (name.equals(banana)) {
return new Banana();
}else if (name.equals(apple)) {
return new Apple();
}else {
return null;
}
}
}
作者:tanoak
链接:https://www.jianshu.com/p/9c21f9b9789f
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
1. 苹果与香蕉类实现水果接口
package com.tanoak.create.factory.simple;
/**
* @author tanoak@qq.com
* @date 2018/7/19 16:43
* @Desc
*/
public class Apple implements IFruit{
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Apple(String name) {
this.name = name;
}
public Apple() {
this.name = name;
}
@Override
public String toString() {
return "Apple{" +
"name='" + name + '\'' +
'}';
}
@Override
public void name() {
this.setName(name);
System.out.println("The is Apple");
}
}
//
package com.tanoak.create.factory.simple;
/**
* @author tanoak@qq.com
* @date 2018/7/19 16:43
* @Desc
*/ public class Banana implements IFruit{
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Banana(String name) {
this.name = name;
}
public Banana() {
this.name = name;
}
@Override
public String toString() {
return "Banana{" +
"name='" + name + '\'' +
'}';
}
@Override
public void name() {
this.setName(name);
System.out.println("This is Banana");
}
}
作者:tanoak
链接:https://www.jianshu.com/p/9c21f9b9789f
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
编写好之后,来看Main方法,当需要苹果时只需要修改一个参数就行了,并不需要在main方法中new,有小伙伴可能要问了,这代码没变少反而多了,关于这个问题请看设计模式序言
package com.tanoak.create.factory.simple;
/**
* @author tanoak@qq.com
* @Desc 简单工厂模式
*/
public class Main {
public static void main(String[] args) {
IFruit apple = FruitFactory.createProduct("apple");//banana
apple.name();
}
}
作者:tanoak
链接:https://www.jianshu.com/p/9c21f9b9789f
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
如理解有误,请指正,谢谢