- 简单工厂模式
简单工厂模式是一种创建型设计模式,其在父类提供一个创建对象的方法,允许子类决定实例化对象的类型。
比如我们常见的猫科动物有老虎和猫咪,我们可以写一个猫科动物的接口felid:
动物会说话,得吃饭 。
public interface felid{
public void say();
public void eat();
}
实例化1:cat
public class cat implements felid{
public void say(){
System.out.println("喵喵喵");
}
public void eat(){
System.out.println("我喜欢吃鱼");
}
}
实例化2:tiger
public class tiger implements felid{
public void say(){
System.out.println("嗷呜~~");
}
public void eat(){
System.out.println("我喜欢吃肉");
}
}
然后我们来到森林(相当于工厂)里,就可能会遇见这些动物,但是鉴于你骨骼清奇,所以只要你想要遇见哪种动物,只要说出它的名字,它就会出现!!!
public class forest{
public static final String NAMEONE="cat";
public static final String NAMETWO="tiger";
public static felid Animals(String name){
if("cat".equals(name)){
new cat();
}else new tiger();
}
}
工厂模式满足了单一职责,每一个业务逻辑都在自己所属的类中完成,满足开闭原则,无需更改,使用调用方就可以在程序中引入子女的产品类型。
但是工厂模式的扩展性差
- 抽象工厂模式
为创建一组相关或者相互依赖的对象提供一个接口,而却无需指定他们的具体类。在实现上,抽象工厂更像是一个中心工厂,创建其他工厂的模式
抽象工厂模式是工厂模式的升级版本,他与工厂模式的区别就在与,工厂模式是针对一个产品等级结构,而抽象工厂模式则是针对的多个产品等级结构
比如汽车我们可以分为两厢车和三厢车,而两厢车和三厢车又存在着排量不同。而两厢车和三厢车就属于不同的产品等级结构,不同的排量就是同一个产品等级下的不同产品线
public interface productOne{
public void show();
}
public interface productTwo{
public void show();
}
public class product1 implements productOne{
pubilc void show(){
System.out.println("这是两厢车");
}
}
public class product2 implements productTwo{
pubilc void show(){
System.out.println("这是三厢车");
}
}
interface IFactory {
public IProduct1 createProduct1();
public IProduct2 createProduct2();
}
class Factory implements IFactory{
public IProduct1 createProduct1() {
return new Product1();
}
public IProduct2 createProduct2() {
return new Product2();
}
}
public class Client {
public static void main(String[] args){
IFactory factory = new Factory();
factory.createProduct1().show();
factory.createProduct2().show();
}
}