博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式_Java_工厂方法模式的概述和使用
阅读量:4965 次
发布时间:2019-06-12

本文共 1661 字,大约阅读时间需要 5 分钟。

  • 工厂方法模式概述
    • 工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
  • 优点
    • 客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
  • 缺点
    • 需要额外的编写代码,增加了工作量
  • 案例演示
    • 动物抽象类:public abstract Animal { public abstract void eat(); }
    • 工厂接口:public interface Factory {public abstract Animal createAnimal();}
    • 具体狗类:public class Dog extends Animal {}
    • 具体猫类:public class Cat extends Animal {}
    • 开始,在测试类中每个具体的内容自己创建对象,但是,创建对象的工作如果比较麻烦,就需要有人专门做这个事情,所以就知道了一个专门的类来创建对象。发现每次修改代码太麻烦,用工厂方法改进,针对每一个具体的实现提供一个具体工厂。

Animal类

package com.soar.factorymethod;public abstract class Animal {    public abstract void eat();}

Cat类

package com.soar.factorymethod;public class Cat extends Animal {
@Override public void eat() { System.out.println("猫吃鱼"); }}

CatFactory类

package com.soar.factorymethod;public class CatFactory implements Factory {
@Override public Animal createAnimal() { return new Cat(); }}

Dog类

package com.soar.factorymethod;public class Dog extends Animal {
@Override public void eat() { System.out.println("狗吃肉"); }}

DogFactory类

package com.soar.factorymethod;public class DogFactory implements Factory {
@Override public Animal createAnimal() { return new Dog(); }}

Factory类

package com.soar.factorymethod;public interface Factory {    public Animal createAnimal();}

Test类

package com.soar.factorymethod;public class Test {    public static void main(String[] args) {        DogFactory df = new DogFactory();        CatFactory cf = new CatFactory();        Dog d = (Dog) df.createAnimal();        Cat c = (Cat) cf.createAnimal();    }}

转载于:https://www.cnblogs.com/soarsir/p/7652175.html

你可能感兴趣的文章
Redis-客户端缓冲区 output buffer
查看>>
[原创]X-HDL 4.2安装与使用
查看>>
iOS开发技巧(1)
查看>>
校内测试618
查看>>
hive中的with用法
查看>>
运维自动化之1 - ansible 批量主机管理
查看>>
Python开发【第十五篇】:Web框架之Tornado
查看>>
HTML表格边框的设置小技巧-表格
查看>>
Java内存回收 - 落日之心的日志 - 网易博客
查看>>
汇编语言-数据表示
查看>>
java中的TreeMap如何顺序按照插入顺序排序
查看>>
NFS原理详解
查看>>
Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密...
查看>>
C# ObjectArx AutoCAD二次开发(转帖)
查看>>
java使用dbutils工具类实现小程序 管家婆记账软件
查看>>
装饰器和内置函数
查看>>
C++实验六继承生
查看>>
ModSecurity SQL注入攻击
查看>>
【Linux】Linux简介
查看>>
Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)
查看>>