设计模式一:简单工厂模式

一、介绍

简单工厂模式属于类的创建型模式,又叫静态工厂方法模式。通过专门定义一个类创建其他类的实例,被创建的实例通常具有共同父类。

优点:简单工厂模式实现了对象的“创建”和“使用”的分离,实现了接口编程,遵循了DIP原则(依赖倒置原则,实际上就是面向接口编程)

缺点:但违背了单一原则(一个工厂生产太多产品);增加新的产品对象时须修改工厂类静态方法违背了开闭原则(就是实体对拓展开放,对修改关闭)

 

二、模式中包含的角色及其职责

1、工厂(Creator)角色

简单工厂模式的核心,它负责实现创建所有的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象

2、抽象(Product)角色

简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口

3、具体产品(Concrete Product)角色

简单工厂模式所创建的具体实例对象

 

三、使用场景

需要生产的产品/对象比较单一,需要不复杂的场景

 

四、类图

 

五、代码实现

产品接口

package com.design.simplefactory;


/**
 * 动物抽象类
 * 行为:名字
 */
public interface Animal {

    public void name();
}

 

测试+产品实现类+工厂类(其实开发都是分开,不在一个类中,这里只是为了更好展示)

package com.design.simplefactory;

/**
 * @Description
 * 测试类
 * @Author
 * @Date 2019/6/121:41
 */
public class Test {
    public static void main(String[] args) {
        /*Animal dog = SimpleFactory.getDog();
        Animal cat = SimpleFactory.getCat();
        dog.name();
        cat.name();*/

        //优化
        Animal animal = SimpleFactory.getAnimal("a");
        animal.name();
    }

}

class Dog implements Animal {

    @Override
    public void name() {
        System.out.println("我是狗");
    }
}

class Cat implements Animal {

    @Override
    public void name() {
        System.out.println("我是猫");
    }
}

//简单工厂类
class SimpleFactory {

   /* public static Animal getCat() {
        return new Cat();
    }

    public static Animal getDog() {
        return new Dog();
    }*/

    //优化
    public static Animal getAnimal(String name) {
        if (name.equalsIgnoreCase("dog")) {
            return new Dog();
        } else if (name.equalsIgnoreCase("cat")) {
            return new Cat();
        }
        return null;
    }
}

这个工厂模式,当有新动物添加时,需要修改原码,不满足开放关闭原则

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值