您的位置:首页 > 编程语言 > Go语言

GOF二十三种设计模式之工厂模式

2017-05-10 00:00 260 查看
先说一下面向对象设计的基本原则:

OCP:开放原则,一个软件的实体应当对扩展开放,对修改关闭。

DIP:依赖倒转原则,针对接口编程,不要针对实现编程。

LoD:迪米特法则,只与直接相关的类通信,避免和陌生人通信。

在平常的编程中,我们都是直接new一个对象,而在工厂模式中,将对象的创建统一进行管理和控制,将调用者与实现类进行解耦。

下边是一个简单的示例代码:

public interface Car {
void run();
}

public class Andi implements Car {

@Override
public void run() {
System.out.println("andi在跑");
}

}

public class Byd implements Car{

@Override
public void run() {
System.out.println("byd在跑");
}

}

public class CarFactory{
//写法1
public static Car getCar(String type){
if("andi".equals(type)){
return new Andi();
}else if("byd".equals(type)){
return new Byd();
}
return null;
}

//写法2
public static Cat getAndi(){
return new Andi();
}

public static Car getByd(){
return new Byd();
}
}

以上简单工厂模式的实现,第二种是工厂方法模式的实现:

public interface CarFactory {
Car createCar();
}

public class AndiFactory implements CarFactory{

@Override
public Car createCar() {
return new Andi();
}

}

public class BydFactory implements CarFactory{

@Override
public Car createCar() {
return new Byd();
}

}

如果新增加一个Benc类的话:如下:
public class BencFactory implements CarFactory{

@Override
public Car createCar() {
return new Benc();
}

}

测试如下:
public static void main(String[] args) {
Car c1 = new AndiFactory().createCar();
Car c2 = new BydFactory().createCar();

c1.run();
c2.run();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息