简单工厂模式(Java)

下面是关于我所写的所有设计模式代码(还是建议自己手打或者想一个别的例子练习一次)
(https://github.com/lihang212010/DesignPatterns-/tree/master/designpatterns/src)

很早前看过几本关于设计模式的书,最近复习了一下,写个博客方便记忆。

先简单介绍简单工厂模式,它不是设计模式中的一个,但是用它的地方不比设计模式中那种少,而且就像我们学java一般先学C语言一样,学设计模式一般也要先学简单工厂模式。

先说下我举的例子在这里插入图片描述
这个是uml图超级简单,主要是我比较懒,还有linux中画uml图工具比较少,图画出都不好看。
代码在最下面,其实很简单,能看懂图的就不用去看代码了
也就是一个工厂类,然后用两个类来继承它,用输出“红色”或者“黑色”来显示结果,
这一部分也就是左边一部分其实怎么写关系都不大,可以接口,抽象都可以,可能会成为另一种设计模式但是用设计模式的话这一方面非常灵活,是可以根据需求修改,甚至你要是懒得话也可以随意节省

而简单工厂模式的精华在于那个简单工厂类
这个类的作用其实主要是为了解决实例化谁的问题(也就是 类 a=new 类();)
而简单工厂模式主要就是这个类其余的都可以修改

可能有些不明白,大家很多估计都用过spring,spring的自动注入功能很多人使用,这个功能其实就运用了简单工厂模式的思想

在实际使用中我们大工程一般都会用到很多new 来实例化,最后用的太多自己都不记得该new谁了,而简单工厂模式就是解决这个,当然是在以增加代码量中解决此问题了

贴下代码


工厂类

public class Factory {

	public void  GetResult() {
		System.out.println("工厂生产签字笔");
	}
}

红色签字笔生产类

public class RedFactory extends Factory{

	@Override
	public void GetResult() {
		System.out.println("工厂生产红色签字笔");
	}
}

黑色签字笔工厂类

public class BlackFactory extends Factory{
	@Override
	public void GetResult(){
		System.out.println("工厂生产黑色签字笔");
	}
}

主方法

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
    Factory factory;
    factory=OperationFactory.creaeFactory("红色");
    factory.GetResult();
	}

}

简单工厂类

public class OperationFactory {

	public static Factory creaeFactory(String colour) {
		Factory factory=null;
   switch (colour) {
    case "黑色":
	     factory=new BlackFactory();
	     break;
    case  "红色":
    	  factory=new RedFactory();
	     break;
     }
		return factory;
	}
}

这个类是核心,它的主要目的在这里是为了解决是实例红色还是黑色签字笔生产的问题,在实际中其实我们不要Switch而使用多个if来解决问题,虽然很多人推荐Switch,但是它灵活性比起if真的差太多了。

GitHub 加速计划 / li / linux-dash
11
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐