java设计模式-简单工厂模式
2016-05-25 12:28
363 查看
1.工厂模式:实现创建者和调用者分离。
2.分类
1)简单工厂模式(静态工厂模式):用来生产同一等级结构中的任意产品。(对于新增的产品,需要修改已有的代码)
2)工厂方法模式:用来生产同一等级结构中的的固定产品。(支持增加任意产品)
3)抽象工厂模式:用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)
3.面向对象设计的基本原则
1)OCP(开放原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。
2)DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。
3)LoD(迪米特法则,Law of Demeter):只与你直接的朋友通讯,而避免和陌生人通讯。
4.核心本质
1)实例化对象,用工厂方法代替new操作。
2)将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
5.简单工厂模式实例
public class CarFactory {
public static Car createCar(String
type) {
if ("audi".equals(type)) {
return
new Audi();
}
if ("byd".equals(type)) {
return
new Byd();
}
return null;
}
}
public class Client01 {
public static
void main(String[]
args) {
// 在没有工厂模式的情况下,Client01要依赖接口,还有所有实现类
Car car1 =
new Audi();
Car car2 =
new Byd();
car1.run();
car2.run();
// 使用工厂模式,Client01只要依赖CarFactory就行,方便调用者调用,更加容易扩展
Car car3 = CarFactory.createCar("audi");
Car car4 = CarFactory.createCar("byd");
car3.run();
car4.run();
}
}
2.分类
1)简单工厂模式(静态工厂模式):用来生产同一等级结构中的任意产品。(对于新增的产品,需要修改已有的代码)
2)工厂方法模式:用来生产同一等级结构中的的固定产品。(支持增加任意产品)
3)抽象工厂模式:用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)
3.面向对象设计的基本原则
1)OCP(开放原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。
2)DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。
3)LoD(迪米特法则,Law of Demeter):只与你直接的朋友通讯,而避免和陌生人通讯。
4.核心本质
1)实例化对象,用工厂方法代替new操作。
2)将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
5.简单工厂模式实例
public class CarFactory {
public static Car createCar(String
type) {
if ("audi".equals(type)) {
return
new Audi();
}
if ("byd".equals(type)) {
return
new Byd();
}
return null;
}
}
public class Client01 {
public static
void main(String[]
args) {
// 在没有工厂模式的情况下,Client01要依赖接口,还有所有实现类
Car car1 =
new Audi();
Car car2 =
new Byd();
car1.run();
car2.run();
// 使用工厂模式,Client01只要依赖CarFactory就行,方便调用者调用,更加容易扩展
Car car3 = CarFactory.createCar("audi");
Car car4 = CarFactory.createCar("byd");
car3.run();
car4.run();
}
}
相关文章推荐
- 制作奥运五环
- spring aop相关概念和xml与注解实现方式
- Spring Security 4.X xml配置重定向
- Spring 依赖注入(DI)的注解
- Java线程终止状态
- Spring事物回滚
- spring-data-jpa中文文档
- Java并发编程:synchronized
- spring mvc 工作流程
- Spring+Mina(六)
- StrutsPrepareAndExecuteFilter中excludedPatterns变量的用法
- javabean实体类对象转为Map类型对象的方法
- Spring jar包详解和包依赖
- java1.8函数式编程概念
- eclipse SE增加Web开发插件
- Java编程思想(第四版)笔记(一)
- Java多线程初学者指南(9):为什么要进行数据同步
- java学习总结(16.05.25)eclipse的查找和替换功能 Ctrl+F
- java随机数且按权重、比例生成
- java集合