Java设计模式圣经连载(01)-简单工厂模式

简单工厂模式.zip 本资源是<C#设计模式>第2版,刘伟,简单工厂模式课后习题4、5的自己写的demo,如果有问题,请留言一起讨论 立即下载

 Java设计模式圣经连载(01)-简单工厂模式

1.1 简单工厂(Simple Factory)模式


简单工厂模式是类的创建,又叫静态工厂方法(Static Factory Methord)模式。简单工厂模式是由一个工厂对象决定创造哪一种产品类的实例。
 
1.1.1 工厂模式的几种形态

工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态的决定将哪一个类实例化,工厂模式有以下几种形态:
 简单工厂(Simple Factory)模式:又称静态工厂方法(Static Factory Methord)模式。
 工厂方法(Factory Method)模式:又称多态性工厂(Polymorphic Factory)模式或虚拟构造子(Virtual Constructor)模式。
 抽象工厂(Abstract Factory)模式:又称工具箱(Kit或Toolkit)模式。
下图所示的就是简单工厂模式的简略类图。
点击在新窗口查看全图

简单工厂模式,或称静态工厂方法模式,是不同工厂方法模式的一个特殊实现。在Java语言中,通常的工厂方法模式不能通过设计功能的退化给出静态工厂方法模式。
 
1.1.2 简单工厂模式的引进(一般模式)
比如有一个农场,生产各种水果,有苹果(Apple)、草莓(Strawberry)、葡萄(Grape);农场的园丁(FruitGardener)要根据客户的需求,提供相应的水果。下面看看是如何用简单工厂模式实现这个过程的,如下图:
点击在新窗口查看全图

 
此模式的实现源码如下:
 
1.1.2.1 产品接口-水果接口:Fruit.java
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:Fruit.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    0:26:51
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  抽象产品角色:工厂的水果产品接口--水果
 */
public interface Fruit {
    /**
     * 种植
     */
    void plant();
    /**
     * 生长
     */
    void grow();
    /**
     * 收获
     */
    void harvest();
}
 
1.1.2.2 产品-平果类:Apple.java
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:Apple.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    0:47:25
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  水果工厂的产品:苹果
 */
public class Apple implements Fruit {
    private int treeAge;
    /**
     * 种植
     */
    public void plant() {
        System.out.println("Apple has been planted.");
    }
    /**
     * 生长
     */
    public void grow() {
        System.out.println("Apple is growing...");
    }
    /**
     * 收获
     */
    public void harvest() {
        System.out.println("Apple has been harvested.");
    }
    /**
     * @return 返回树龄
     */
    public int getTreeAge() {
        return treeAge;
    }
    /**
     * 设置树龄
     */
    public void setTreeAge(int treeAge) {
        this.treeAge = treeAge;
    }
}
 
1.1.2.3 产品-草莓类:Strawberry.java
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:Strawberry.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    0:45:09
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  水果工厂的产品:草莓
 */
public class Strawberry implements Fruit {
    /**
     * 生长
     */
    public void grow() {
        System.out.println("Strawberry is growing...");
    }
    /**
     * 收获
     */
    public void harvest() {
        System.out.println("Strawberry has been harvested.");
    }
    /**
     * 种植
     */
    public void plant() {
        System.out.println("Strawberry has been planted.");
    }
    /**
     * 辅助方法
     */
    public static void log(String msg) {
        System.out.println(msg);
    }
}
 
1.1.2.4 产品-葡萄类:Grape.java
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:Grape.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    0:36:56
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  水果工厂的产品:葡萄
 */
public class Grape implements Fruit {
    private boolean seedless;   //是否有籽
    /**
     * 种植
     */
    public void plant() {
        System.out.println("Grape has been planted.");
    }
    /**
     * 生长
     */
    public void grow() {
        System.out.println("Grape is growing...");
    }
    /**
     * 收获
     */
    public void harvest() {
        System.out.println("Grape has been harvested.");
    }
    /**
     * @return 是否有籽
     */
    public boolean getSeedless() {
        return seedless;
    }
    /**
     * 有无籽的赋值方法
     */
    public void setSeedless(boolean seedless) {
        this.seedless = seedless;
    }
    /**
     * 辅助方法
     */
    public static void log(String msg) {
        System.out.println(msg);
    }
}
 
1.1.2.5 工厂-园丁类:FruitGardener.java
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:FruitGardener.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    1:03:27
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  工厂类角色: 水果园丁,生产水果产品
 */
public class FruitGardener {
    /**
     * 静态工厂方法
     * @param which :具体的产品名称
     * @return 一个水果对象
     * @throws BadFruitException
     */
    public static Fruit factory(String which) throws BadFruitException {
        if (which.equalsIgnoreCase("apple")) {
            return new Apple();
        } else if (which.equalsIgnoreCase("strawberry")) {
            return new Strawberry();
        } else if (which.equalsIgnoreCase("grape")) {
            return new Grape();
        } else {
            throw new BadFruitException("Bad fruit request");
        }
    }
}
 
1.1.2.6 工厂异常定义类:BadFruitException.java
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:BadFruitException.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    1:04:56
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  工厂的异常处理类
 */
public class BadFruitException extends Exception {
    public BadFruitException(String msg) {
        super(msg);     //调用父类的构造方法
    }
}
 
1.1.2.7 一般工厂模式的测试类
package com.lavasoft.patterns.simplefactory.ybgc;
/**
 * Created by IntelliJ IDEA.
 * FileName:TestApp.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    1:12:08
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式模式--简单工厂模式--一般模式
 * ReadMe:  一般工厂模式的测试类
 */
public class TestApp {
    /**
     * 测试方法
     */
    private void test(String fruitName) {
        try {
            Fruit f = FruitGardener.factory(fruitName);
            System.out.println("恭喜!生产了一个水果对象:" + fruitName);
        } catch (BadFruitException e) {
            System.out.println("对不起!工厂目前不能生产你所要的产品:" + fruitName);
            System.out.println(e.getMessage());     //输出异常信息
            e.printStackTrace();                    //输出异常堆栈信息
        }
    }
    /**
     * 应用入口方法
     */
    public static void main(String args[]) {
        TestApp t = new TestApp();
        t.test("apple");
        t.test("grape");
        t.test("strawberry");
        t.test("car");  //此处会抛异常,水果工厂能生产car(轿车)吗!哈哈哈哈...
    }
}
 
1.1.2.8 测试运行结果
恭喜!生产了一个水果对象:apple
恭喜!生产了一个水果对象:grape
恭喜!生产了一个水果对象:strawberry
对不起!工厂目前不能生产你所要的产品:car
Bad fruit request
com.lavasoft.patterns.simplefactory.ybgc.BadFruitException: Bad fruit request
 at com.lavasoft.patterns.simplefactory.ybgc.FruitGardener.factory(FruitGardener.java:28)
 at com.lavasoft.patterns.simplefactory.ybgc.TestApp.test(TestApp.java:19)
 at com.lavasoft.patterns.simplefactory.ybgc.TestApp.main(TestApp.java:37)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Process finished with exit code 0
从结果看来,有异常,是因为输入了工厂不能生产的类型car(小汽车),哈哈哈哈,果园能生产汽车吗?让幼儿园的小朋友告诉你吧!
 
1.1.3 简单工厂模式的一般性结构

 
总结一下,从上面的简单工厂模式的实现可以看到,简单工厂模式需要实现
 工厂角色:园丁
 抽象产品:水果接口
 具体产品:苹果、葡萄、草莓
另外还一般还需要实现
 工厂异常类
 客户类
简单工厂模式的一般性结构图如下:
点击在新窗口查看全图

1.1.4 简单工厂模式的实现
 
1.1.4.1 使用接口或者抽象类实现多层次的产品结构
工厂类可以有多个静态的工厂方法,分别用来生产不同的产品对象。
 
1.1.4.2 多个工厂方法
分别负责创建不同的产品对象,比如java.text.DateFormat类是其子类的工厂类,而DateFormat类就是提供了多个静态工厂方法。
 
1.1.4.3 抽象产品角色的省略
如果系统仅有一个具体产品角色产品角色的话,那么就可以省略掉抽象产品角色。省略掉抽象产品角色后的简略类图如下:
点击在新窗口查看全图

 
下面是一个例子,工厂角色创建具体产品,源代码如下:
 
1.1.4.3.1 产品角色:ConcreteProduct.java
package com.lavasoft.patterns.simplefactory.gchb;
/**
 * Created by IntelliJ IDEA.
 * FileName:ConcreteProduct.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    2:07:48
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--工抽合并(工厂角色与抽象产品角色合并)
 * ReadMe:  具体产品类,表示单一的一类产品.
 */
public class ConcreteProduct {
    public ConcreteProduct() {
    }
}
 
1.1.4.3.2 工厂角色:
package com.lavasoft.patterns.simplefactory.gchb;
/**
 * Created by IntelliJ IDEA.
 * FileName:Creator.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    1:56:43
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--工抽合并(工厂角色与抽象产品角色合并)
 * ReadMe:  具体产品类,与抽象产品角色合并,只生产单一种类产品.
 */
public class Creator {
    /**
     * 静态工厂方法
     * @return 一个产品
     */
    public static Creator factory(){
        return new Creator();
    }
}
 
1.1.4.3.3 测试类
package com.lavasoft.patterns.simplefactory.gchb;
/**
 * Created by IntelliJ IDEA.
 * FileName:TestApp.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    2:11:30
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--工抽合并(工厂角色与抽象产品角色合并)
 * ReadMe:  工抽合并测试类
 */
public class TestApp {
    private void test() {
        Creator t = Creator.factory();
        System.out.println("产品成功生产!");
    }
    public static void main(String args[]) {
        new TestApp().test();
    }
}
 
1.1.4.3.4 测试结果
产品成功生产!
Process finished with exit code 0
 
1.1.4.4 工厂角色与抽象角色合并
在有些情况下,工厂角色可以由抽象产品角色扮演。典型的应用就是java.text.DateFormat类,一个抽象产品类同时是子类的工厂,如下图所示:
点击在新窗口查看全图

 
下面是我自己写的一个实现,源代码如下:
 
1.1.4.4.1 抽象产品类(同时又是工厂类)
package com.lavasoft.patterns.simplefactory.cxsl;
/**
 * Created by IntelliJ IDEA.
 * FileName:AbsProduct.java
 * User:    LavaSoft
 * Date:    2006-12-3
 * Time:    3:23:47
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--工厂角色与抽象产品角色合并
 * ReadMe:  抽象产品类,同时又是工厂类.
 */
public abstract class AbsProduct {
    static Product factory(){
        return new Product();
    }
}
 
1.1.4.4.2 具体产品类
package com.lavasoft.patterns.simplefactory.cxsl;
/**
 * Created by IntelliJ IDEA.
 * FileName:Product.java
 * User:    LavaSoft
 * Date:    2006-12-3
 * Time:    3:23:54
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--工厂角色与抽象产品角色合并
 * ReadMe:  具体产品类
 */
public class Product {
    Product(){
    }
}
 
1.1.4.4.3 测试类
package com.lavasoft.patterns.simplefactory.cxsl;
/**
 * Created by IntelliJ IDEA.
 * FileName:TestApp.java
 * User:    LavaSoft
 * Date:    2006-12-3
 * Time:    3:30:30
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--工厂角色与抽象产品角色合并
 * ReadMe:  测试类
 */
public class TestApp {
    private void test() {
        Product a = AbsProduct.factory();
        System.out.println("成功创建一个产品对象!");
    }
    public static void main(String args[]) {
        TestApp test = new TestApp();
        test.test();
    }
}
 
 
1.1.4.4.4 测试结果

成功创建一个产品对象!
Process finished with exit code 0

 
这个实现很简单,代码就不做详细解释了!
 
1.1.4.5 三个角色全部合并

如果在上面例子的基础上,连抽象产品角色都省略了,而工厂角色就可以与具体产品角色合并。换言之,一个产品类为自身的工厂。如下图所示:
点击在新窗口查看全图

 
下面给出一个简单的实现例子如下:
 
1.1.4.5.1 具体产品类
package com.lavasoft.patterns.simplefactory.sshb;
/**
 * Created by IntelliJ IDEA.
 * FileName:ConcreteProduct.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    2:20:38
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--三色合一模式
 * ReadMe:  抽象产品,产品,工厂类 三和一后的具体产品类
 */
public class ConcreteProduct
{
 public ConcreteProduct(){}
    /**
     * 静态工厂方法
     * @return 具体的产品ConcreteProduct实例
     */
    public static ConcreteProduct factory()
    {
        return new ConcreteProduct();
    }
}
 
1.1.4.5.2 测试类
package com.lavasoft.patterns.simplefactory.sshb;
/**
 * Created by IntelliJ IDEA.
 * FileName:TestApp.java
 * User:    LavaSoft
 * Date:    2006-12-1
 * Time:    2:24:22
 * 《Java与模式》(--阎宏博士著)读书笔记
 * 工厂模式--简单工厂模式--三色合一模式
 * ReadMe:  测试方法
 */
public class TestApp {
    //测试方法
    private void test(){
        ConcreteProduct t=ConcreteProduct.factory();
        System.out.println("产品成功生产!");
    }
    //
    public static void main(String args[]){
        new TestApp().test();
    }
}
 
1.1.4.5.3 测试运行结果
产品成功生产!
Process finished with exit code 0
代码很简单,不解释了。
 
1.1.4.6 产品对象的循环使用和登记式的工厂方法
这里在单例模式和多例模式中在讨论。
简单工厂模式的优点和缺点
 
1.1.4.6.1 简单工厂模式的优点
核心式工厂类,工厂类决定在什么情况下创建哪一种产品类的实例。而客户端则可以免除直接创建产品对象的责任,而仅仅是“消费”产品。简单工厂模式通过这种做法实现了对责任的分割。
 
1.1.4.6.2 简单工厂模式的缺点
当产品类具有复杂的多层次等级结构时,工厂类只有它自己。以不变应万变,是其缺点。
这个工厂类集中了所有产品创建逻辑,形成了一个无所不知的全能类(也称上帝类),如果此类出问题了,整个应用都受大影响。
当产品有多个接口时,判断在什么条件下创建什么产品类实例会很困难。
对于工厂来说,增加新的产品时一个痛苦的过程。工厂角色必须知道每一种产品,如何创建它们,以及何时向客户提供它们。换言之,接纳新的产品意味着修改这个工厂角色的源代码。简单工厂只在有限的程度上支持“开-闭”原则。
由于简单工厂模式使用静态方法作为工厂方法,而静态方法无法由子类继承,因此工厂角色无法形成基于继承的等级结构。这一缺点会在工厂方法模式中得到克服。
 
1.1.4.7 简单工厂模式在Java中的应用
DateFormat与简单工厂模式
SAX2库中的XMLReaderFactory与简单工厂模式
 
1.1.4.8 女娲捏土造人
女娲需要用土造出一个个的人,这就是简单工厂模式的应用,类图如下:
点击在新窗口查看全图

 
女娲是工厂角色,人是抽象产品角色,张三李四是产品。具体实现就不在给出了,参看园丁生产水果的例子。
工厂模式与DAO模式 NULL 博文链接:https://gaojiewyh.iteye.com/blog/419199 立即下载

相关推荐

简单工厂模式的例子

NULL 博文链接:https://306963591.iteye.com/blog/1133631

卖水果老板讲解设计模式之工厂模式

卖水果的老板教你工厂模式~

Xmumu_的博客 1171

【老生谈算法】可视化通道流中瞬时涡量场的算法实现与MATLAB源码分析——瞬时涡量场

本文旨在探讨可视化通道流中瞬时涡量场的方法,并通过MATLAB编程实现这一过程。涡量场作为描述流体旋涡强度和方向的重要物理量,对于理解复杂流体运动具有重要意义。本文首先介绍了涡量场的基本概念,随后详细阐述了从测量数据收集到涡量场可视化的完整流程,并给出了相应的MATLAB源码。通过实际运行该源码,我们展示了涡量场的可视化结果,并讨论了其在流动结构识别和动力学行为理解中的应用。关键词: 涡量场;流体运动;MATLAB;可视化;PIV一、引言。

m0_53407570的博客 1127

工厂模式(C++实现)

工厂模式(C++实现)   没事捣鼓了下相对而言比较简单的工厂模式,然后写了个小Demo,记录下,等十年后看到也是种回忆哈.......   工厂模式一般分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一、简单工厂模式:   简单工厂模式,工厂类是创建产品的,它决定创建哪一种产品,就像领导决定采用那种技术方案样。举个例子,现在有宝马车和奔驰车...

蜗牛也是牛 578

如何下载era5数据?(两种方式)

供水利大数据云计算课程同学参考使用#

Camiel_sweet的博客 1万+

开源LocalAI本地人工智能安装教程

LocalAI是一款能在本地运行的人工智能应用,它兼容了OpenAI API规范,它可以在普通的电脑运行,不需要GPU,也不需要联网,音频转录

2301_78652552的博客 3617

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

抽象工厂模式主要用于创建相关对象的家族。当一个产品族中需要被设计在一起工作时,通过抽象工厂模式,能够保证客户端始终只使用同一个产品族中的对象;并且通过隔离具体类的生成,使得客户端不需要明确指定具体生成类;所有的具体工厂都实现了抽象工厂中定义的公共接口,因此只需要改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。但该模式的缺点在于添加新的行为时比较麻烦,如果需要添加一个新产品族对象时,需要更改接口及其下所有子类,这必然会带来很大的麻烦。System.out.println("生产狗粮");

Arguan_的博客 1458

华为OD机试真题 新系统 2026-04-22 Java&Go 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 264

java圣经_Java设计模式圣经连载(01)-简单工厂模式[转载]

简单工厂模式是类的创建,又叫静态工厂方法(Static Factory Methord)模式。简单工厂模式是由一个工厂对象决定创造哪一种产品类的实例。1.1.1工厂模式的几种形态工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态的决定将哪一个类实例化,工厂模式有以下几种形态:简单工厂(Simple Factory)模式:又称静态工厂方法(Static Factory Methord...

weixin_32485901的博客 317

汇川H5U PLC通过EtherCAT总线控制SV660N和X3E伺服

首先我们看下系统硬件和软件配置:汇川H5U PLC的编程软件是:AutoShop V4.6.3.0 硬件:PLC H5U-1614MTD-A16,汇川伺服型号:SV660NS1R6I 电机型号:MS1H1-10B30CB 100W 220V 3000R/M 0.32N*M 1.3A,禾川伺服驱动器型号:SV-X3EB075A-A2 伺服电机型号:SV-X2MH075A-N2LA。

RXXW_Dor的博客 2万+

RK3588开发笔记-spi扩展canfd芯片MCP2518FD调试笔记

在嵌入式系统开发中,CANFD(控制器局域网灵活数据速率)是一种广泛应用于汽车和工业自动化领域的通信协议。为了满足项目需求,我们在RK3588平台上通过SPI接口扩展了CANFD芯片MCP2518FD,之所以用spi进行canfd扩展,是为了解决原生RK3588原生can不够稳定的问题(发送扩展帧有几率编程标准帧,RK3568/3588均存在该问题)。通过本次调试工作,我们成功地在RK3588平台上扩展了CANFD芯片MCP2518FD,并实现了与CAN总线的稳定通信。

flypig has a dream! 4227

Java设计模式圣经连载01-简单工厂模式(转载)

1.1 简单工厂(Simple Factory)模式 简单工厂模式是类的创建,又叫静态工厂方法(Static Factory Methord)模式。简单工厂模式是由一个工厂对象决定创造哪一种产品类的实例。   1.1.1 工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态的决定将哪一个类实例化,工厂模式有以下几种形态:  简单工厂(Simple Factory)...

男人,就应该对自己狠一点! 204

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

Java设计模式圣经连载之(00)-前言

Java设计模式圣经连载 阎宏博士《Java与模式》读书笔记       作者:熔             岩日期:2006年12月       前  言     面向对象开发中程序员更重视代码的重用性和可维护性,设计模式使人们可以更加简单方便地重复使用成功的设计和体系结构。目前已有的模式有100多个,在此我将阎宏博士的《Java与模式》学习笔记与各位分享,让更多Java爱...

weixin_33695082的博客 121

微博scheme

微博scheme

qq_42278595的博客 325

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

收藏网站68

http://blog.csdn.net/Fly_o0o/article/details/16968187   Intent以及IntentFilter http://blog.csdn.net/galensphang/article/details/13512015   Android系统广播[Broadcast]机制分析 http://blog.csdn.net/Siobhan/a

chun1234567的专栏 253

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

proxy (关于代理模式)

转自:Java设计模式圣经连载         http://hi.baidu.com/liuzhenfeng511/blog/item/6f9f0c1be771501f8618bfd1.html 代理模式是一种非常重要的设计模式,在Java语言中有着广泛的应用,包括Spring AOP的核心设计思想,都和代理模式有密切关系。 代理模式主要分两种:一种是静态代理,一种是动态代理。两种代...

Insomnious hibernater 214

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

DAO模式和抽象工厂模式在系统设计中的应用

[quote]在实际应用中,工厂方法用得比较多一些,而且是和动态类装入器组合在一起应用。[/quote] 设计模式之Factory [url]http://www.jdon.com/designpatterns/designpattern_factory.htm[/url] 简单工厂模式讲解及实例: [url]http://www.cnblogs.com/zzj-46000452/...

macleo的路 676

工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 工厂模式——简单工厂模式、工厂方法模式、抽象工厂模式一、问题描述二、问题分析问题一类图:问题二类图:问题三类图:三、几个工厂模式优缺点简单工厂模式:1.简单工厂模式的优点2.简单工厂模式的优点工厂方法模式:1.工厂方法模式的优点2.工厂方法模式的优点抽象工厂模式:1.抽象工厂模式的优点2.抽象工厂模式的优点四、代码及结果简单工厂模式:工厂方法模式:抽象工厂模式: 一、问题描述 问题1.图形工厂   使用简单工厂模式设计一个可以创建不同几.

qq_45703570的博客 803

如何在IDEA中自动生成类图

笔者之前在OOPre课程中曾用IDEA来编写java代码,但是很多时候IDEA自带的功能并不能给出一个较为直观的关系图来显示一个项目中各个类(class)或接口(interface)等之间的关系。在该课程最后一次作业要求所写博客中,我看到有同学在作业中附上了非常直观的类图,便也想试着探索一下。果不其然,IDEA中的一个插件可以实现这个功能。注意笔者的IDEA中使用了简体中文的插件,可能对某些使用英文版的读者造成不便。3.选中一个文件夹,右击,选择“图表”,然后选择“显示图...”1.“文件”->“设置”

m0_73345433的博客 1万+

【工厂模式】工厂方法模式、抽象工厂模式-简单例子

工厂方法模式、抽象工厂模式-简单例子

水w的博客 2701

Java设计模式(工厂模式)——简单工厂模式(完整详解,附有代码+案例)

简单工厂(单击查看)不是一种设计模式,反而比较像是一种编程习惯。不属于GOF的23种经典设计模式。

Java技术加油站的博客 1595

idea 自定义插件 工具面板

idea 自定义插件 工具面板 文章目录idea 自定义插件 工具面板前言一、临时与永久窗口二、如何创建工具窗口?1.引入库2.读入数据总结 前言 工具窗口是IDE的子窗口,用于显示信息。这些窗口通常在主窗口的外边缘具有自己的工具栏(称为工具窗口栏),其中包含一个或多个工具窗口按钮,这些按钮可激活在主IDE窗口的左侧,底部和右侧显示的面板。 通过工具窗口可以访问有用的开发任务:查看项目结构,运行和调试应用程序,与版本控制系统和其他外部工具集成,代码分析,搜索和导航等。默认情况下,工具窗口连接到主窗口的底部

qq_40794266的博客 5114
上一篇: Java设计模式圣经连载(03)-抽象工厂模式
下一篇: Java设计模式圣经连载(02)-工厂方法(Factory Method)模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值