(GOF23设计模式)_简单工厂模式详解
2016-02-24 02:03
507 查看
工厂模式
实现了创建者和调用者的分离详细分类:
简单工厂模式工厂方法模式
抽象工厂模式
面向对象设计的基本原则:
OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对应拓展开放,对修改关闭DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程
LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信
1、案例:在没有使用工厂模式的情况下
Car.javapackage 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.javapackage 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.javapackage 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(); } }
运行结果:
奥迪在跑! 比亚迪在跑!
相关文章推荐
- LeetCode 226. Invert Binary Tree
- 解决Rockmongo不显示中文的问题
- LeetCode 104. Maximum Depth of Binary Tree
- tango with django的7.3.2我遇到的问题
- LeetCode 258. Add Digits
- LeetCode 136. Single Number
- 一.项目介绍及django的MTV模式简介
- Ubuntu 14.04 下安装google的浏览器——Chrome
- (GOF23设计模式)_单例模式_双重检查锁式_静态内部类式_枚举式
- Five things that make Go fast
- LeetCode Algorithms #326 <Power of Three>
- Category的主要知识点
- 使用google&nbsp;Adwords&nbsp;业务要谨慎
- (GOF23设计模式)_单例模式_应用场景_饿汉式_懒汉式
- Django学习笔记
- POJ 1042 Gone Fishing#贪心
- [Google EarlGrey] 0x01 第一个测试用例
- google api 生成二维码
- logo
- Ubuntu下安装Go语言开发环境及编辑器的相关配置