ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java设计模式之简单工厂模式

2020-12-24 18:02:10  阅读:191  来源: 互联网

标签:Java ratheuapo 工厂 teteighprcjwh collections https dribbble 设计模式 com


Java设计模式之简单工厂模式

    • 简单工厂模式

      使用参数或者配置文件等事先定义好的变量,然后利用分支判断初始化具体产品类并返回;
      不符合“开发-封闭”原则,每次增加产品,都需要修改类方法。工厂类单一,不用维护大量的工厂类;
      工厂方法模式抽象工厂模式规避了不符合“开发-封闭”原则,同时支持更灵活的增加产品;

    • 适用性

      1)当一个类不知道它所必须创建的对象的类的时候。
      2)当一个类希望由它的子类来指定它所创建的对象的时候。

    • 举例

      如哈佛汽车加工厂既可以生产跑车又可以生产卡车。

    • UML类图
      在这里插入图片描述

    • 代码示例

      • 定义哈佛汽车接口(或抽象类)
        package com.jin.demo.DesignPatterns.Factory.SimpleFactory;
        
        /**
         * 定义哈佛汽车接口(或抽象类)
         * @auther jinsx
         * @date 2019-05-15 08:58
         */
        public interface HFCar {
        	// 什么汽车都可以跑
        	void run();
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
      • 哈佛跑车
        package com.jin.demo.DesignPatterns.Factory.SimpleFactory;
        
        /**
         * 哈佛跑车
         * @auther jinsx
         * @date 2019-05-15 09:00
         */
        public class HFRoadster implements HFCar{
        	@Override
        	public void run() {
        		System.out.println("哈佛小跑车,起步就是快");
        	}
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
      • 哈佛卡车
        package com.jin.demo.DesignPatterns.Factory.SimpleFactory;
        
        /**
         * 哈佛卡车
         * @auther jinsx
         * @date 2019-05-15 09:03
         */
        public class HFTruck implements HFCar {
        	@Override
        	public void run() {
        		System.out.println("哈佛小卡车,运输能力就是强");
        	}
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
      • 声明简单工厂,有一个返回Car对象的静态类
        package com.jin.demo.DesignPatterns.Factory.SimpleFactory;
        
        /**
         * 简单工厂
         * @auther jinsx
         * @date 2019-05-15 09:06
         */
        public class CarSimpleFactory {
        	// 需要使用定义好的参数获取产品对象,没增加产品都需要修改次工厂方法
        	public static HFCar createHFCar(String type){
        		HFCar car = null;
        		switch (type){
        			case "roadster" :
        				car = new HFRoadster();
        				break;
        			case "truck" :
        				car = new HFTruck();
        				break;
        		}
        		return car;
        	}
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
      • 测试类https://dribbble.com/sanaslatvmcb/collections/4201092
        https://dribbble.com/nesmaoxclul/collections/4201094
        https://dribbble.com/sanaslatvmcb/collections/4201098
        https://dribbble.com/nesmaoxclul/collections/4201100
        https://dribbble.com/sanaslatvmcb/collections/4201103
        https://dribbble.com/nesmaoxclul/collections/4201105
        https://dribbble.com/sanaslatvmcb/collections/4201109
        https://dribbble.com/nesmaoxclul/collections/4201110
        https://dribbble.com/nesmaoxclul/collections/4201115
        https://dribbble.com/sanaslatvmcb/collections/4201117
        https://dribbble.com/nesmaoxclul/collections/4201119
        https://dribbble.com/sanaslatvmcb/collections/4201120
        https://dribbble.com/sanaslatvmcb/collections/4201123
        https://dribbble.com/nesmaoxclul/collections/4201124
        https://dribbble.com/sanaslatvmcb/collections/4201128
        https://dribbble.com/nesmaoxclul/collections/4201130
        https://dribbble.com/sanaslatvmcb/collections/4201132
        https://dribbble.com/nesmaoxclul/collections/4201134
        https://dribbble.com/sanaslatvmcb/collections/4201136
        https://dribbble.com/nesmaoxclul/collections/4201138
        https://dribbble.com/sanaslatvmcb/collections/4201141
        https://dribbble.com/nesmaoxclul/collections/4201142
        https://dribbble.com/sanaslatvmcb/collections/4201144
        https://dribbble.com/nesmaoxclul/collections/4201145
        https://dribbble.com/sanaslatvmcb/collections/4201150
        https://dribbble.com/nesmaoxclul/collections/4201151
        https://dribbble.com/sanaslatvmcb/collections/4201154
        https://dribbble.com/nesmaoxclul/collections/4201155
        https://dribbble.com/sanaslatvmcb/collections/4201158
        https://dribbble.com/nesmaoxclul/collections/4201160
        https://dribbble.com/sanaslatvmcb/collections/4201164
        https://dribbble.com/nesmaoxclul/collections/4201165
        https://dribbble.com/sanaslatvmcb/collections/4201167
        https://dribbble.com/nesmaoxclul/collections/4201168
        https://dribbble.com/sanaslatvmcb/collections/4201171
        https://dribbble.com/nesmaoxclul/collections/4201174
        https://dribbble.com/sanaslatvmcb/collections/4201176
        https://dribbble.com/nesmaoxclul/collections/4201179
        https://dribbble.com/sanaslatvmcb/collections/4201183
        https://dribbble.com/nesmaoxclul/collections/4201184
        https://dribbble.com/ratheuapo/collections/4201189
        https://dribbble.com/nanoughhsdfb/collections/4201191
        https://dribbble.com/ratheuapo/collections/4201193
        https://dribbble.com/nanoughhsdfb/collections/4201197
        https://dribbble.com/ratheuapo/collections/4201200
        https://dribbble.com/nanoughhsdfb/collections/4201203
        https://dribbble.com/ratheuapo/collections/4201204
        https://dribbble.com/nanoughhsdfb/collections/4201207
        https://dribbble.com/ratheuapo/collections/4201209
        https://dribbble.com/nanoughhsdfb/collections/4201211
        https://dribbble.com/ratheuapo/collections/4201213
        https://dribbble.com/nanoughhsdfb/collections/4201216
        https://dribbble.com/ratheuapo/collections/4201218
        https://dribbble.com/nanoughhsdfb/collections/4201220
        https://dribbble.com/ratheuapo/collections/4201221
        https://dribbble.com/nanoughhsdfb/collections/4201222
        https://dribbble.com/ratheuapo/collections/4201225
        https://dribbble.com/nanoughhsdfb/collections/4201228
        https://dribbble.com/ratheuapo/collections/4201230
        https://dribbble.com/nanoughhsdfb/collections/4201232
        https://dribbble.com/ratheuapo/collections/4201235
        https://dribbble.com/nanoughhsdfb/collections/4201237
        https://dribbble.com/ratheuapo/collections/4201239
        https://dribbble.com/nanoughhsdfb/collections/4201242
        https://dribbble.com/ratheuapo/collections/4201243
        https://dribbble.com/nanoughhsdfb/collections/4201247
        https://dribbble.com/ratheuapo/collections/4201250
        https://dribbble.com/nanoughhsdfb/collections/4201252
        https://dribbble.com/ratheuapo/collections/4201254
        https://dribbble.com/nanoughhsdfb/collections/4201257
        https://dribbble.com/ratheuapo/collections/4201258
        https://dribbble.com/nanoughhsdfb/collections/4201261
        https://dribbble.com/ratheuapo/collections/4201265
        https://dribbble.com/nanoughhsdfb/collections/4201267
        https://dribbble.com/ratheuapo/collections/4201271
        https://dribbble.com/nanoughhsdfb/collections/4201273
        https://dribbble.com/ratheuapo/collections/4201275
        https://dribbble.com/nanoughhsdfb/collections/4201278
        https://dribbble.com/ratheuapo/collections/4201282
        https://dribbble.com/nanoughhsdfb/collections/4201283
        https://dribbble.com/teteighprcjwh/collections/4201286
        https://dribbble.com/shirebvxpbn/collections/4201287
        https://dribbble.com/teteighprcjwh/collections/4201290
        https://dribbble.com/shirebvxpbn/collections/4201291
        https://dribbble.com/teteighprcjwh/collections/4201294
        https://dribbble.com/shirebvxpbn/collections/4201295
        https://dribbble.com/teteighprcjwh/collections/4201299
        https://dribbble.com/shirebvxpbn/collections/4201301
        https://dribbble.com/teteighprcjwh/collections/4201304
        https://dribbble.com/shirebvxpbn/collections/4201306
        https://dribbble.com/teteighprcjwh/collections/4201310
        https://dribbble.com/shirebvxpbn/collections/4201314
        https://dribbble.com/teteighprcjwh/collections/4201316
        https://dribbble.com/shirebvxpbn/collections/4201318
        https://dribbble.com/teteighprcjwh/collections/4201321
        https://dribbble.com/shirebvxpbn/collections/4201323
        https://dribbble.com/teteighprcjwh/collections/4201324
        https://dribbble.com/shirebvxpbn/collections/4201325
        https://dribbble.com/teteighprcjwh/collections/4201327
        https://dribbble.com/shirebvxpbn/collections/4201330
        https://dribbble.com/teteighprcjwh/collections/4201333
        https://dribbble.com/shirebvxpbn/collections/4201335
        https://dribbble.com/teteighprcjwh/collections/4201339
        https://dribbble.com/shirebvxpbn/collections/4201341
        https://dribbble.com/teteighprcjwh/collections/4201343
        https://dribbble.com/shirebvxpbn/collections/4201344
        https://dribbble.com/teteighprcjwh/collections/4201348
        https://dribbble.com/shirebvxpbn/collections/4201349
        https://dribbble.com/teteighprcjwh/collections/4201352
        https://dribbble.com/shirebvxpbn/collections/4201354
        https://dribbble.com/teteighprcjwh/collections/4201356
        https://dribbble.com/shirebvxpbn/collections/4201357
        https://dribbble.com/teteighprcjwh/collections/4201359
        https://dribbble.com/shirebvxpbn/collections/4201360
        https://dribbble.com/teteighprcjwh/collections/4201364
        https://dribbble.com/shirebvxpbn/collections/4201365
        https://dribbble.com/teteighprcjwh/collections/4201368
        https://dribbble.com/shirebvxpbn/collections/4201371
        https://dribbble.com/teteighprcjwh/collections/4201373
        https://dribbble.com/shirebvxpbn/collections/4201375
        https://dribbble.com/shisatmikv/collections/4201381
        https://dribbble.com/shisatmikv/collections/4201384
        https://dribbble.com/shisatmikv/collections/4201388
        https://dribbble.com/shisatmikv/collections/4201393
        https://dribbble.com/shisatmikv/collections/4201398
        https://dribbble.com/shisatmikv/collections/4201404
        https://dribbble.com/shisatmikv/collections/4201408
        https://dribbble.com/shisatmikv/collections/4201415
        https://dribbble.com/shisatmikv/collections/4201417
        https://dribbble.com/shisatmikv/collections/4201418
        https://dribbble.com/shisatmikv/collections/4201421
        https://dribbble.com/shisatmikv/collections/4201424
        https://dribbble.com/shisatmikv/collections/4201428
        https://dribbble.com/shisatmikv/collections/4201432
        https://dribbble.com/shisatmikv/collections/4201433
        https://dribbble.com/shisatmikv/collections/4201436
        https://dribbble.com/ceeteanbkcxeb/collections/4201438
        https://dribbble.com/shisatmikv/collections/4201439
        https://dribbble.com/ceeteanbkcxeb/collections/4201443
        https://dribbble.com/shisatmikv/collections/4201444
        https://dribbble.com/ceeteanbkcxeb/collections/4201446
        https://dribbble.com/shisatmikv/collections/4201447
        https://dribbble.com/ceeteanbkcxeb/collections/4201448
        https://dribbble.com/ceeteanbkcxeb/collections/4201451
        https://dribbble.com/ceeteanbkcxeb/collections/4201454
        https://dribbble.com/ceeteanbkcxeb/collections/4201457
        package com.jin.demo.DesignPatterns.Factory.SimpleFactory;
        
        /**
         * 测试类
         * @auther jinsx
         * @date 2019-05-15 09:15
         */
        public class TestSimpleFactory {
        	public static void main(String[] args) {
        		// 来一个哈佛小跑
        		HFCar roadster = CarSimpleFactory.createHFCar("roadster");
        		roadster.run();
        		// 来一个哈佛小卡
        		HFCar truck = CarSimpleFactory.createHFCar("truck");
        		truck.run();
        	}
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17

标签:Java,ratheuapo,工厂,teteighprcjwh,collections,https,dribbble,设计模式,com
来源: https://blog.csdn.net/zhao_963084302/article/details/111602954

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有