接口、类
package com.example.leetcode.design.factory;
public interface BaoMa {
void run();
}
package com.example.leetcode.design.factory;
public class BaoMa730 implements BaoMa {
@Override
public void run() {
System.out.println("BaoMa840");
}
}
package com.example.leetcode.design.factory;
public class BaoMa840 implements BaoMa {
@Override
public void run() {
System.out.println("BaoMa 840");
}
}
简单工厂模式
package com.example.leetcode.design.factory.simple;
import com.example.leetcode.design.factory.BaoMa;
import com.example.leetcode.design.factory.BaoMa730;
import com.example.leetcode.design.factory.BaoMa840;
public class BaoMaFactory {
public BaoMa produce(String type) {
switch (type) {
case "730":
return new BaoMa730();
case "840":
return new BaoMa840();
default:
return null;
}
}
}
工厂方法模式
package com.example.leetcode.design.factory.normal;
import com.example.leetcode.design.factory.BaoMa;
import com.example.leetcode.design.factory.BaoMa730;
public class BaoMa730Factory implements BaoMaFactory{
@Override
public BaoMa produce() {
return new BaoMa730();
}
}
package com.example.leetcode.design.factory.normal;
import com.example.leetcode.design.factory.BaoMa;
import com.example.leetcode.design.factory.BaoMa840;
public class BaoMa840Factory implements BaoMaFactory {
@Override
public BaoMa produce() {
return new BaoMa840();
}
}
package com.example.leetcode.design.factory.normal;
import com.example.leetcode.design.factory.BaoMa;
public interface BaoMaFactory {
BaoMa produce();
}
抽象工厂模式
package com.example.leetcode.design.factory.abstracts;
import com.example.leetcode.design.factory.BaoMa;
import com.example.leetcode.design.factory.BaoMa730;
import com.example.leetcode.design.factory.BaoMa840;
public class ConcreteBaoMaFactory implements BaoMaFactory{
@Override
public BaoMa produceBaoMa730() {
return new BaoMa730();
}
@Override
public BaoMa produceBaoMa840() {
return new BaoMa840();
}
}
package com.example.leetcode.design.factory.abstracts;
import com.example.leetcode.design.factory.BaoMa;
public interface BaoMaFactory {
BaoMa produceBaoMa730();
BaoMa produceBaoMa840();
}