工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。
在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。
package org.jzkangta.factorydemo02;
interface Car{
public void start();
public void stop();
}
class Benz implements Car{
public void start(){
System.out.println("Benz开动了。。。。");
}
public void stop(){
System.out.println("Benz停车了。。。");
}
}
class Ford implements Car{
public void start(){
System.out.println("Ford开动了。。。。");
}
public void stop(){
System.out.println("Ford停车了。。。");
}
}
class BigBus implements Car{
public void start(){
System.out.println("大巴开车了。。。。");
}
public void stop(){
System.out.println("大巴停车了。。。。");
}
}
class MiniBus implements Car{
public void start(){
System.out.println("小巴开车了。。。。");
}
public void stop(){
System.out.println("小巴停车了。。。。");
}
}
interface AbstractFactory{
}
class CarFactory implements AbstractFactory{
public Car getCar(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo02."+type).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return c;
}
}
class BusFactory implements AbstractFactory{
public Car getBus(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo02."+type).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return c;
}
}
public class Factorydemo02 {
public static void main(String[] args) {
//CarFactory cf=new CarFactory();
BusFactory bf=new BusFactory();
Car c=null;
//c=cf.getCar("Benz");
c=bf.getBus("BigBus");
c.start();
c.stop();
}
}
(注:代码来自jzkangta老师的教程)
分享到:
相关推荐
设计模式学习笔记(一)--简单工厂模式源码和类图
《C++20设计模式》学习笔记-第3章工厂方法和抽象工厂模式学习代码
详述设计模式之工厂模式,包括简单工厂,工厂方法,描象工厂的学习笔记,都附带有例子源代码
head first 工厂模式学习笔记
最新设计模式超级详解课程,课程深入浅出的探讨了设计模式总览,创建型模式、结构型模式、行为模式的...├─day01-总览设计模式-06-创建型模式-工厂-简单工厂模式.mp4 ├─day01-总览设计模式-07-创建型模式-工厂-工厂
定义: 结构说明: 相关概念: 接口: 接口与抽象类的区别: 面向接口编程: 功能: 时序图: 优缺点: 代码阐释:
工厂模式,策略模式,装饰模式,代理模式,工厂方法模式,原型模式等23个设计模式
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
在PHP学习中,收集了一些常用的编程方法和思想,集中详细的记录了9种设计模式的设计思路和用法。比如:工厂模式,单例模式,注册模式,适配器模式,观察者模式等
1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、...:单例模式(8种实现)、抽象工厂模式、原型模式、建造者模式、工厂模式...
普科国际软件一个学院的学习笔记,有3个文件word文档,文本,还有factory-demo源文件代码
本文实例讲述了Javascript面向对象程序设计工厂模式。分享给大家供大家参考,具体如下: 工厂模式和单例模式(https://www.jb51.net/article/184230.htm)应该是设计模式中应用最多的模式了,工厂模式的定义:提供...
1. 创建型模式:创建型模式关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。这些模式可以帮助我们更灵活地创建对象,避免直接使用new关键字来创建对象,降低...
最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足
毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。单例模式 当需要保证某个对象只能有一个实例的时候,单例模式非常有用。它把...
JavaScript常见的一些设计模式学习笔记和代码实现。包括工厂模式、单例模式、代理模式、发布订阅模式、中介者模式等等内容。
配套博客学习笔记: ://yubuntu0109.github.io/tags/design-and-pattern/ 参考书籍(推荐): 《Java设计模式 - 刘伟》 , 《图解设计模式 - [日]结城浩》 创建型模式 :check_mark:简单工厂模式( Simple Factor ...
来自《Head Fist 设计模式》一书的实例,个人学习笔记用途