易学设计模式看书笔记(3) - 工厂方法模式
2023-09-11 14:14:59 时间
二、工厂方法模式
1.动物管理系统的样例
首先,抽象的动物类和详细的动物实现类: public interface Animal{ public void eat(); } public class Tiger implements Animal { public void eat(){ sysout.out.println("老虎会吃"); }; public void run(){ sysout.out.println("老虎会跑"); }; } public class Dolphin implements Animal { public void eat(){ sysout.out.println("海豚会吃"); }; public void swim(){ sysout.out.println("海豚会游泳"); }; } 然后设计一个仅仅负责定义创建方式的抽象工厂类: public interface Factory { public Animal createAnimail(); } 再分别设计老虎、海豚的详细工厂实现类。都继承抽象工厂类: public class Trigerfactory implements Factory { public Animal createAnimal(){ return new Triger(); } } public class Dolphinfactory implements Factory { public Animal createAnimal(){ return new Dolphin(); } } client调用: public class Client { public static void main(String[] args) { Factory factory = new TrierFactory(); Animal animal = factory.createAnimal(); animal.eat(); factory = new DolphinFactory(); animal = fatory.createAnimal(); animal.eat(); } }
2.工厂方法模式简单介绍
定义:工厂方法模式中抽象工厂负责定义创建对象的接口,
详细对象的创建工作由实现抽象工厂的详细工厂类来完毕。
3.工厂方法模式的优缺点:
长处:
在工厂方法模式中。client不再负责对象的创建。
而是把这个责任交给了详细的工厂类,client仅仅负责对象的调用,
明白了各个类的职责。
假设有新的产品加进来,仅仅须要添加一个详细的创建产品工厂类
和详细的产品类,不会影响其它原有的代码,后期维护更加easy。
增强了系统的可扩展性。
缺点:
须要额外的编写代码,添加了工作量。
相关文章
- 【解决方法】UITableView 性能优化笔记
- MySQL 性能调优的10个方法
- 【C#】扩展方法(方法参数里的this)
- 【学习笔记24】JavaScript数组遍历方法习题
- 【MATLAB教程案例38】语音信号的去噪方法matlab仿真学习——LMS自适应滤波,谱减法去噪滤波及维纳滤波等
- 机器学习笔记之马尔可夫链蒙特卡洛方法(四)吉布斯采样
- 《工作流管理——模型、方法和系统》笔记1
- 《工作流管理——模型、方法和系统》笔记2:Petri网对工作流建模
- 统计学习方法笔记 -- 决策树
- 《Python数据挖掘:概念、方法与实践》一2.4 小结
- 设计模式java——模板方法模式
- FusionCharts JavaScript API - Functions 常用方法整理笔记
- Thinkphp学习笔记5-URL生成U方法
- 淘宝镜像安装方法
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- 强化学习学习笔记(二)-基于模型的动态规划方法
- 设备管理器,其他设备,PCI数据捕获和信号处理控制器出现感很多未知设备感叹号,通用解决方法,以华为matebook为例
- Java_jdbc 基础笔记之七 数据库连接(方法升级)
- java学习笔记(6)方法、内存、重载
- Java面向对象基础知识笔记:方法、构造方法、方法重载、继承、多态、抽象类、接口、静态字段与静态方法、包、作用域、classpath与jar、模块依赖关系
- 【Unity3D日常BUG】Unity3D中出现“unsafe code 不安全的代码”的错误时的解决方法
- 学习笔记:JAVA RMI远程方法调用简单实例
- CSS多种方法实现分隔线
- 没有找到MSVCR100.dll解决方法
- 学习笔记(17):Python网络编程&并发编程-Process对象的其他属性或方法
- 知网引文网络使用方法
- 46数据结构与算法分析之---排序方法比较