码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式二 工厂模式

时间:2018-08-26 01:18:42      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:耦合   抽象工厂   gety   als   sim   else   test   nbsp   static   

0、基本定义

工厂模式定义:一个用于创建对象的接口,让子类决定实例化哪一个类。实例化延迟到其子类。‘

抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类

只对结果负责。

解耦合

1、类型

1.1 、简单工厂模式:

public class SimpleFactory {


    public Milk getMilk(String name) {

        if ("特仑苏".equals(name)) {
            return new Telunsu();
        } else if ("伊犁".equals(name)) {
            return new Yili();
        } else if ("蒙牛".equals(name)) {
            return new Mengniu();
        }
        return null;
    }
}

 

1.2、工厂模式

public interface Factory {

    //统一产品出口

    Milk getMilk();
}


public class MengniuFactotry implements Factory {
    @Override
    public Milk getMilk() {
        return new Mengniu();
    }
}


public class TelunsuFactotry implements Factory {
    @Override
    public Milk getMilk() {
        return new Telunsu();
    }
}


public class YiliFactotry implements Factory {
    @Override
    public Milk getMilk() {
        return new Yili();
    }
}

 

Test

public class FactoryTest {

    public static void main(String[] args) {

        Factory factory = new MengniuFactotry();
        System.out.println(factory.getMilk().getName());
    }

 

 1.3 抽象工厂模式:

产品登记,产品族

public abstract class AbstractFactory {

    public  abstract Milk getMengniu();
    public  abstract Milk getYili();
    public  abstract Milk getTelunsu();

}


public class MilkFactory extends AbstractFactory {
    @Override
    public Milk getMengniu() {
        return new Mengniu();
    }

    @Override
    public Milk getYili() {
        return new Yili();
    }

    @Override
    public Milk getTelunsu() {
        return new Telunsu();
    }
}

 

3、优点

优点:

》良好的封装性,代码结构清晰

》扩展性好

 

使用场景

》new一个对象的替代品

 

参考资料:

《大话设计模式》

 

设计模式二 工厂模式

标签:耦合   抽象工厂   gety   als   sim   else   test   nbsp   static   

原文地址:https://www.cnblogs.com/idea-persistence/p/9535926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!