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

(GOF23设计模式)_简单工厂模式详解

2016-02-24 02:03 507 查看

工厂模式

实现了创建者和调用者的分离

详细分类:

简单工厂模式

工厂方法模式

抽象工厂模式

面向对象设计的基本原则:

OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对应拓展开放,对修改关闭

DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程

LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信

1、案例:在没有使用工厂模式的情况下

Car.java

package junit.matrix.simplefactory;

public interface Car {

public void run();
}


Audi.java

package junit.matrix.simplefactory;

public class Audi implements Car {

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


Byd.java

package junit.matrix.simplefactory;

public class Byd implements Car {

@Override
public void run() {
System.out.println("比亚迪在跑!");
}
}


Client01.java

package junit.matrix.simplefactory;

/**
* 测试在没有工厂模式的情况下
*
* Client01<BR>
* 创建人:Matrix <BR>
* 时间:2016年2月24日-上午1:17:43 <BR>
*
* @version 1.0.0
*
*/
public class Client01 {// 调用者

public static void main(String[] args) {
Car c1 = new Audi();
Car c2 = new Byd();

c1.run();
c2.run();
}
}


运行结果:

奥迪在跑!
比亚迪在跑!




2、使用简单工厂模式

CarFactory.java

package junit.matrix.simplefactory;

public class CarFactory {

public static Car createCar(String type) {
if ("奥迪".equals(type)) {
return new Audi();
} else if ("比亚迪".equals(type)) {
return new Byd();
} else {
return null;
}
}
}


Client02.java

package junit.matrix.simplefactory;

public class Client02 {// 调用者

public static void main(String[] args) {
Car c1 = CarFactory.createCar("奥迪");
Car c2 = CarFactory.createCar("比亚迪");

c1.run();
c2.run();
}
}


工厂类也可以这样

CarFactory02.java

package junit.matrix.simplefactory;

public class CarFactory02 {

public static Car createAudi() {
return new Audi();
}

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


Client02.java

package junit.matrix.simplefactory;

public class Client02 {// 调用者

public static void main(String[] args) {
Car c1 = CarFactory02.createAudi();
Car c2 = CarFactory02.createByd();

c1.run();
c2.run();
}
}


运行结果:

奥迪在跑!
比亚迪在跑!


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: