(@WhiteTaken)设计模式学习——工厂方法模式
2024-08-31 14:57:52
这个工厂方法模式,是简单工厂的延伸,不同点在于,将某个具体的类继续细分,将核心部分抽象成一个接口。而简单工厂,把核心写在了一个类上,不利于拓展。
举个例子,简单工厂中有苹果类,香蕉类,我们创建了一个FruitFactory的工厂类,用来生成苹果和香蕉类的实例。
但是如果我们需要创建更多的水果类,这时候就需要修改FruitFactory工厂类。这样做很不方便。
这时候就有了工厂方法模式的实现。
具体方法是我们将总的工厂类,抽象成一个接口,然后创建苹果类工厂和香蕉类工厂,去实现这个接口。
这样即使我们再添加橘子类,我们需要创建橘子类工厂去实现水果工厂的接口。
在客户端的调用中就可以轻松获得橘子对象。
直接上代码:
1.创建一个水果接口,让水果们都去实现它。
public interface Fruit {
public void Get();
}
2.创建苹果类和香蕉类。
public class Apple implements Fruit{
public void Get()
{
System.out.println("Apple");
}
} public class Banana implements Fruit {
public void Get() {
System.out.println("Banana");
}
}
3.创建水果工厂的接口。
public interface FruitFactory {
public Fruit getFruit();
}
4.创建苹果工厂和香蕉工厂,去实现水果工厂的接口。
public class AppleFactory implements FruitFactory{
public Fruit getFruit() {
return new Apple();
}
} public class BananaFactory implements FruitFactory {
public Fruit getFruit() {
return new Banana();
}
}
5.主客户端要做的事。
public class MainClass {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
FruitFactory appleFactory=new AppleFactory();
FruitFactory bananaFactory=new BananaFactory();
Fruit apple=appleFactory.getFruit();
Fruit banana=bananaFactory.getFruit();
apple.Get();
banana.Get();
}
}
这样就完成了工厂方法模式与简单工厂的结合。极大的降低了耦合。
最新文章
- Python 生成器与迭代器 yield 案例分析
- GPUImage 内置滤镜解析
- 如何避免后台IO高负载造成的长时间JVM GC停顿(转)
- 找到一个学习bootstrap的好网站
- POJ2192 - Zipper(区间DP)
- SGU Volume 1
- CharacterController 角色控制器实现移动和跳跃
- MySQL 分区表各个分区的行数
- Java String类和Object类
- Python并发编程之学习异步IO框架:asyncio 中篇(十)
- java多线程快速入门(八)
- getVisibleSize,getWinSize,getFrameSize,getViewPortRect
- eclipse下创建maven项目并部署到tomcat服务器(转)
- 七夕情人节表白-纯JS实现3D心形+图片旋转
- Spring Boot--02MVC设置
- jQuery页面滚动数字增长插件
- 复习,关于server.xml的一点理解
- C++ 获取特定进程的CPU使用率<;转>;
- .NET MVC Scripts.Render 上下文不存在问题解决方法
- iOS10修改电池状态栏的方法
热门文章
- Cocos2dx 3.1.1 学习笔记整理(4):事件监听与Action的初步使用
- ApexSql Log
- C# 6.0 11个新特性
- mysql管理---表分区
- VSC#2010打开视图编辑器假死/卡死
- (简单) HDU 3397 Sequence operation,线段树+区间合并。
- 【转】50条大牛C++编程开发学习建议
- iOS Socket第三方开源类库 ----AsyncSocket 分类: ios相关 ios技术 2015-03-11 22:14 59人阅读 评论(0) 收藏
- md5-linux_shell
- bzoj3289