工厂方法模式
来源:互联网 发布:淘宝登陆异常如何解除 编辑:程序博客网 时间:2024/04/29 22:08
工厂方法模式(Factory Method Pattern)
1.定义:定义一个创建产品对象的工厂接口,让子类决定实例化哪一种实例对象,即将实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品的创建。
2.所遵循的设计原则:
a."开-闭"原则
b.依赖倒置原则
a."开-闭"原则
b.依赖倒置原则
3.代码实现:
a.结构截图:
b.代码具体实现:
FruitFactory:
a.结构截图:
b.代码具体实现:
FruitFactory:
package com.feng.pattern.factory_method_pattern.factory;import com.feng.pattern.factory_method_pattern.product.AbstractFruit;public interface FruitFactory { //水果工厂生产水果 AbstractFruit produceFurit();}AppleFactory:
package com.feng.pattern.factory_method_pattern.factory;import com.feng.pattern.factory_method_pattern.product.AbstractFruit;import com.feng.pattern.factory_method_pattern.product.Apple;public class AppleFactory implements FruitFactory {public AbstractFruit produceFurit() {return new Apple();}}PearFactory:
package com.feng.pattern.factory_method_pattern.factory;import com.feng.pattern.factory_method_pattern.product.AbstractFruit;import com.feng.pattern.factory_method_pattern.product.Pear;public class PearFactory implements FruitFactory {public AbstractFruit produceFurit() {return new Pear();}}AbstractFruit:
package com.feng.pattern.factory_method_pattern.product;public abstract class AbstractFruit {//定义水果的名称private String name;public AbstractFruit(){}public AbstractFruit(String name) {this.name = name;}//获取水果的名称public String getName() {return name;}//设定水果的名称public void setName(String name) {this.name = name;}}Apple:
package com.feng.pattern.factory_method_pattern.product;public class Apple extends AbstractFruit {public Apple() {super("Apple");}}Pear:
package com.feng.pattern.factory_method_pattern.product;public class Pear extends AbstractFruit {public Pear() {super("Pear");}}测试类FactoryMethodTest:
package junit.test;import org.junit.BeforeClass;import org.junit.Test;import com.feng.pattern.factory_method_pattern.factory.AppleFactory;import com.feng.pattern.factory_method_pattern.factory.FruitFactory;import com.feng.pattern.factory_method_pattern.factory.PearFactory;import com.feng.pattern.factory_method_pattern.product.AbstractFruit;public class FactoryMethodTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}@Testpublic void produceApple(){FruitFactory factory = new AppleFactory();AbstractFruit fruit = factory.produceFurit();System.out.println("工厂生产了"+fruit.getName());}@Testpublic void producePear(){FruitFactory factory = new PearFactory();AbstractFruit fruit = factory.produceFurit();System.out.println("工厂生产了"+fruit.getName());}}
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- WINCE中dll的使用(VB.net)操作另一个窗口句柄
- 第80章、Handle-Message-Looper消息机制之一(从零开始学Android)
- 第81章、Handle-Message-Looper消息机制之二(从零开始学Android)
- 真有人做p2p,在embedded platform上?
- CMMI-软件项目功能点估算方法
- 工厂方法模式
- wireshark功能模块分析
- SQLITE 修改表结构
- DLL的线程中创建WINDOWS窗口并接收U盘移动磁盘查入消息
- mysql初始密码设置
- 软件开发流程
- Java 内部类以及匿名内部类
- 安排任何任务都应该考虑的10件事情
- 打开含avi格式视频文件的文件夹“死机”问题的解决