JAVA设计模式之:工厂模式(上)--工厂方法模式
来源:互联网 发布:中超数据库 搜狐 编辑:程序博客网 时间:2024/06/03 13:51
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式一般有两种类型:
- 列表内容
- 工厂方法模式
- 及抽象工厂模式(是工厂方法模式的扩展)
一般在什么情况下使用工厂方法模式呢?
- 1,有多个类似(功能相似)的对象实例需要创建(new)。
- 2,写代码过程中不能事先知道需要创建哪种类型,多少数量等情况下实例对象。
- 3,扩展性的考虑,当增加实体对对象类型时,我们要方便快速地实现对象创建。
工厂方法模式代码演示
/**
* 生产车子的接口(要实现的功能就是制造车子)
* @description:
*/
public interface MakeCarInterface {
void produce();//实现了生产方法
}
/**
*功能是生产车子底盘
* @description:
*/
public class CarBottom implements MakeCarInterface {
@Overridepublic void produce() { System.out.println("******我生产车底盘************");}
}
/**
*功能是生产车子顶部
* @description:
*/
public class CarHead implements MakeCarInterface {
@Overridepublic void produce() { System.out.println("******我生产车头************");}
}
测试类:
public class Test {
public static void main(String[] args) {
//如果没有工厂方法,我们要获取对象就需要一个一个地new出来
MakeCarInterface car1=new CarHead();
car1.produce();
System.out.println(“———–”);
//有了生产对象实例的工厂类,我们就可以直接使用工厂类的相应方法
MakeCarInterface car2=new CarBottom();
car2.produce();
CarFactory factory=new CarFactory();
System.out.println(“————-“);
MakeCarInterface car3=factory.getHair(“head”);
car3.produce();
CarBottom car4=(CarBottom) factory.getHairByClassName(“factory.CarBottom”);
car4.produce();
}
}
工厂方法模式完全实现‘开-闭 原则,实现了可扩展。复杂的层次结构,我们可以应用于产品结果复杂的场合。
- JAVA设计模式之:工厂模式(上)--工厂方法模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式) (转)
- (转载)JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式之工厂模式(一):简单工厂模式+工厂方法模式
- JAVA设计模式之工厂模式之工厂方法模式
- Java设计模式之工厂模式:工厂方法模式
- Java设计模式--工厂模式(简单工厂+工厂方法)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- Java设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
- win10 快捷键
- Linux面试题
- 产品策划五:App界面设计风格
- LinuxShell算术运算
- 连续五个班爆满超110人!淡季PHP为何如此疯狂?
- JAVA设计模式之:工厂模式(上)--工厂方法模式
- 防止Block的循环引用(技巧)
- 测试python代码在博客的显示
- shell 脚本学习之一 ------let,echo,变量
- Unity3D研究院之Machine动画脚本自动生成AnimatorController
- listview使用addfootview不显示
- Linux——获取帮助
- 优化UITableViewCell高度计算的那些事
- 从工程中删除Cocoapods