设计模式——简单工厂模式

创建型模式

创建型模式关注对象的创建过程,其主要的特点是将对象的创建和使用分离,这样在使用对象时无需关心对象的创建细节,从而降低系统的耦合度。
创建型模式对类的实例化过程即对象的创建过程进行抽象,能够使软件模块做到与对象的创建和组织无关。创建型模式隐藏了对象的创建细节,通过隐藏对象如何被创建和组合在一起达到整个系统独立的目的。在掌握创建型模式时,需要回答以下三个问题,创建什么(What)、由谁创建(who)和何时创建(when)

简单工厂模式

**定义:**定义一共类,根据参数的不同返回不同类的实例,这些类具有公共的父类和一些公共的方法
角色:
1.工厂类2.抽象产品类 3.具体产品类
类图: 其中Factory为工厂类,负责根据逻辑返回一个具体的产品。所以它依赖于具体产品类(ConcretrProduct),具体产品类则实现抽象产品类Product
在这里插入图片描述

实战题目:

模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man对象,如果传入参数“W”,则返回一个Woman对象,用Java语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意“女娲”的变化。

类图及其角色作用

![在这里插入图片描述](https://img-blog.csdnimg.cn/76cbe059bcf849398e0806bad5ee76b1.png

Person作为抽象产品类,Woman、Man、Roboat实现接口Person,Factory作为核心工厂类

代码

public interface Person {
    void Create();
}
public class Man implements  Person{
    public void Create(){
        System.out.println("制造男人");
    }
}
public class Roaboat implements Person{

    public void Create(){
        System.out.println("制造机器人");
    }
}
public class Woman implements  Person{
    public void Create(){
        System.out.println("制造女人");
    }
}
public class NvwaFactory {

    public static Person creatPerson(String kind){
         if(kind.equalsIgnoreCase("m"))
        {
            return new Man();
        }
        else if (kind.equalsIgnoreCase("w"))return new Woman();
        else return new Roaboat();
    }
}


客户端

public class Clicent {
    public static void main(String args[]){
         Person person;
         person=NvwaFactory.creatPerson("r");
         person.Create();
    }
}

简单工厂优劣分析

优点:简单工厂模式实现了责任的划分。免除直接创建产品对象的责任。
缺点:但是一旦工厂类无法工作,整个系统都要受到影响,同时系统扩展较为困难,一旦添加新产品就不得不修改工厂逻辑,违反了开闭原则,并造成工厂逻辑过于复杂。

总结

简单工厂主要是通过工厂类里面写if、else来返回一个抽象产品

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值