java设计模式之----工厂模式

                                       设计模式之----工厂模式

一.工厂模式专门负责大量有共同接口的类的实例化,工厂模式可以动态的决定实例化哪一个类。工厂模式可以分为3类

---(1)简单工厂模式,又叫静态工厂方法模式

---(2)工厂方法模式,又叫多态性工厂模式

---(3)抽象工厂模式,又叫工具箱模式


二.简单工厂模式,由一个工厂类决定创建哪一个产品。包括3个角色(工厂类根据参数不同,实例化不同的产品对象。不修改代码的话,是无法扩展的)

            --工厂类角色:这个角色是这个模式的核心,决定创建哪个产品。在java中它往往由一个具体类实现

            --抽象产品角色:是所有具体产品继承的父类或者实现的接口。

            --具体产品角色:工厂类所创建的就是这个类的实例。

public class Model {
    public static void main(String args[]){
       new Factory().factory();
    }

    //抽象产品
    interface Product{}

    //具体产品1
    static class Product1 implements Product{
        public Product1(){
            System.out.println("具体产品1");
        }
    }

    static class Factory{
        static  Product factory(){
            return new Product1();
        }
    }

}
三. 工厂方法模式,工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。

包括4个角色:

抽象工厂角色:这个角色是工厂方法模式的核心,是具体工厂继承的父类或者实现的接口。

具体工厂角色:抽象工厂角色的具体实现,用来创建具体的产品

抽象产品角色:产品对象继承的父类或者实现的接口。

具体产品角色:具体的产品对象

public class Model {
    public static void main(String args[]){
        Product  p1 = new Model().new Factory1().create();
    }

    //抽象产品
    interface Product{}

    //抽象工厂
    interface  Factory{
       public  Product create();
    }

    //具体产品1
     class Product1 implements Product{
        public Product1(){
            System.out.println("具体产品1");
        }
    }
    //具体产品2
    class Product2 implements Product{
        public Product2(){
            System.out.println("具体产品2");
        }
    }

    //具体工厂1
    class Factory1 implements Factory{
        @Override
        public Product create() {
            return  new Product1();
        }
    }

    //具体工厂2
    class Factory2 implements Factory{
        @Override
        public Product create() {
            return  new Product2();
        }
    }

}
四抽象工厂模式,包含4个角色:

处理具有相同或相似等级的多个产品族的产品对象的创建问题





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值