首页 > 其他分享 >工厂模式

工厂模式

时间:2023-09-21 11:15:35浏览次数:24  
标签:Huawei abstract 模式 public Phone brandName 工厂 class

1:工厂方法模式:

public class FactoryTest {

    //定义抽象产品类
    public abstract class Phone {
        public abstract String brandName();
    }

    //定义具体实现类
    public class Huawei extends Phone {

        @Override
        public String brandName() {
            return "my name is Huawei";
        }
    }

    //定义具体实现类
    public class Xiaomi extends Phone {

        @Override
        public String brandName() {
            return "my name is Xiaomi";
        }
    }

    //定义抽象工厂
    public abstract class Factory {
        public abstract Phone generatePhone();
    }

    //定义Huawei工厂,生成华为手机
    public class HuaweiFactory extends Factory {

        @Override
        public Phone generatePhone() {
            return new Huawei();
        }
    }

    //定义Xiaomi工厂,生成小米手机
    public class XiaomiFactory extends Factory {

        @Override
        public Phone generatePhone() {
            return new Huawei();
        }
    }

    //使用:
    public void test() {
        Factory huaweiFactory = new HuaweiFactory();
        Phone huaweiPhone = huaweiFactory.generatePhone();
        Log.d("test", "phone name--->" + huaweiPhone.brandName());

        Factory xiaomiFactory = new XiaomiFactory();
        Phone xiaomiPhone = xiaomiFactory.generatePhone();
        Log.d("test", "phone name--->" + xiaomiPhone.brandName());
    }
}

 

改进:

public class FactoryTest {

    //定义抽象产品类
    public abstract class Phone {
        public abstract String brandName();
    }

    //定义具体实现类
    public class Huawei extends Phone {

        @Override
        public String brandName() {
            return "my name is Huawei";
        }
    }

    //定义具体实现类
    public class Xiaomi extends Phone {

        @Override
        public String brandName() {
            return "my name is Xiaomi";
        }
    }

    //定义抽象工厂
    public abstract class Factory {
        public abstract <T extends Phone> T generatePhone(Class<T> tClass);
    }

    //具体工厂
    public class ConcretFactory extends Factory {

        @Override
        public <T extends Phone> T generatePhone(Class<T> tClass) {
            Phone phone = null;
            try {
                phone = (Phone) Class.forName(tClass.getName()).newInstance();
                Log.e("test", "生产了一个手机");
                phone.brandName();
            } catch (Exception e) {

            }
            return (T) phone;

        }
    }


    //使用:
    public void test() {
        Phone huaweiPhone = new ConcretFactory().generatePhone(Huawei.class);
        huaweiPhone.brandName();
    }
}

 

标签:Huawei,abstract,模式,public,Phone,brandName,工厂,class
From: https://www.cnblogs.com/wnpp/p/17719413.html

相关文章

  • .Net 6搭建仓储模式框架学习(一)
    仓储模式.NET仓储模式是一种软件设计模式,用于将应用程序的数据访问逻辑与业务逻辑分离。它通过将数据访问操作封装在一个单独的仓储类中,使得业务逻辑层可以独立于具体的数据存储技术。在.NET仓储模式中,仓储类负责处理与数据存储相关的操作,例如数据的增删改查、数据的持久化和查......
  • 开源框架中的责任链模式实践
    作者:vivo互联网服务器团队-WangZhi责任链模式作为常用的设计模式而被大家熟知和使用。本文介绍责任链的常见实现方式,并结合开源框架如Dubbo、Sentinel等进行延伸探讨。一、责任链介绍在GoF的《设计模式》一书中对责任链模定义的:将请求的发送和接收解耦,让多个接收对象都有......
  • FPGA 让2个LED灯按照设置的模式各自在一个变化循环内独立亮灭变化
    代码如下://让多个LED灯按照设置的模式各自在一个变化循环内独立亮灭变化。modulecounter_led_5(Clk,Reset_n,CtrlA,CtrlB,Time,Led);inputClk;inputReset_n;input[7:0]CtrlA;input[7:0]CtrlB;input[31:0]Time;......
  • 单例模式
    main.javapublicclassmain{staticpublicvoidmain(String[]a){only_onek=only_one.get();k.mess();}}  only_one.javapublicclassonly_one{staticprivateonly_oneonlyOne=newonly_one();privateonly_one(){}......
  • 单例模式 静态内部类方式
    publicclassFolderV3Singleton{privateFolderV3Singleton(){}privatestaticclassDeviceHolder{privatestaticFolderV3SingletonourInstance=newFolderV3Singleton();}publicstaticFolderV3SingletongetInstance(){......
  • INT13H 是一个基本的硬盘控制器中断,用于在实模式下进行对硬盘的读写操作。它提供了多
    INT13H是一个基本的硬盘控制器中断,用于在实模式下进行对硬盘的读写操作。它提供了多个功能来操控硬盘,包括磁盘读、磁盘写、磁盘参数查询等。以下是一些常见的INT13H功能:磁盘读取:功能号2:从磁盘上读取扇区到内存缓冲区。寄存器AH=02h,AL表示要读取的扇区数量,CH表示磁道号......
  • 单例模式(手撕代码)
    一、单例模式单例模式是常见的一种软件设计模式,单例对象的类只能实例化一个对象。该类负责创建对象,同时保证只能创建一个对象。并提供一个访问它的全局访问点,该实例被所有程序模块共享。一般应用与工具类的实现或者消耗资源的场景。特点:类构造函数私有持有自己类的引用对......
  • 设计模式之单例模式
    单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,实现单例模式有多种方式,以下是其中两种常见的实现方式:饿汉式单例模式(EagerInitialization):在类加载时就创建实例,并且该实例在整个程序生命周期内都是唯一的。publicclassSingleton{......
  • FPGA 让LED灯按照指定的亮灭模式亮灭,亮灭模式未知,由用户随机指定
    代码内容如下:modulecounter_led_3(Clk,Reset_n,Ctrl_n,Led);inputClk;inputReset_n;input[7:0]Ctrl_n;outputregLed;reg[26:0]counter;parameterMCNT=100000000;always@(posedgeClkornegedgeRe......
  • 浅析AI视频分析与视频监控技术的工厂车间智能化监管方案
    一、方案背景工厂生产车间一般是从原材料到成品的流水作业,有大量器械和物料。为保障车间财产安全并提高生产效率,需要进行全面的监管。在生产制造流水线的关键工序中,不仅有作业过程监管需求,同时,也存在生产发生异常及产品质量问题的过程还原需求,需要结合直观现场与客观数据的融合分析......