TIJ_工厂方法
来源:互联网 发布:淘宝不用背字根学五笔 编辑:程序博客网 时间:2024/06/05 18:52
在通俗点就是说,你new一个对象的时候直接调用工厂方法就行了,
在编程时,需要定义一个工厂接口,由不同的的子类去实现,再定一个具体工厂类,定义一个产生实例的方法,我们通过这个方法来获得实例就行了。
工厂模式主要的功能是可以简化或者说是统一化创建对象,便于扩展和维护。
例如:
1:定义一个接口A,A里面有一个抽象出来的公共call( )方法;定义一个A的工厂类接口B,创建一个A getA()方法用于创建返回A类型,以便于利用多态去调用A的子类去不同实现
2:每有一个新类型(也就是实现了A的产品),就实现call( )方法;同时定义一个此产品的工厂类去实现B,用于返回这个新产品的对象(也就是去实现B的抽象方法)。(Tips:如果创建方式是同样的话,创建越多的对象,或者说创建初始化一个新产品越复杂,工厂模式就越能体现便利)。
3:创建一个静态方法用于统一管理创造对象。
public static void AManeger(B b){
A a=b.getA( );
a.call();
}
4:使用的时候就直接调用AManeger()这个方法就可以了,只要是实现A的新产品,都可以调用这个方法来创建对象,并且调用实现的call( )方法
工厂方法:
public class Factories {
public static void serviceConsumer(ServiceFactory fact){
Service s=fact.getService();
s.method1();
s.method2();
}
public static void main(String[] args) {
serviceConsumer(new Implementation1Factory());
serviceConsumer(new Implementation2Factory());
}
}
interface Service{
void method1();
void method2();
}
interface ServiceFactory{
Service getService();
}
class Implementation1 implements Service{
public void method1() {System.out.println("Implementation1.method1");}
public void method2() {System.out.println("Implementation1.method2");}
}
class Implementation1Factory implements ServiceFactory{
public Service getService() {return new Implementation1();}
}
class Implementation2 implements Service{
public void method1() {System.out.println("Implementation2.method1");}
public void method2() {System.out.println("Implementation2.method2");}
}
class Implementation2Factory implements ServiceFactory{
public Service getService() {return new Implementation2();}
}
public abstract Vehicle createVehicle();
public abstract Weapon createWeapon();
public abstract Food createFood();
}
@Override
public Food createFood() {
return new Apple();
}
@Override
public Vehicle createVehicle() {
return new Car();
}
@Override
public Weapon createWeapon() {
return new AK47();
}
}
public static void main(String[] args) {
AbstractFactory f = new DefaultFactory();
Vehicle v = f.createVehicle();
v.run();
Weapon w = f.createWeapon();
w.shoot();
Food a = f.createFood();
a.printName();
}
}
(1)简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。
(2)工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。
(3)抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构
许多人都掉进了这种诱惑的陷阱,只要有可能就去创建接口和工厂。这实际上已经变成了一种草率的设计优化。
任何抽象性都应该是应真正的需求而产生的。当必要时,你应该重构接口而不是到处添加额外级别的间接性,并由此带来的额外的复杂性。
恰当的原则应该是优先选择类而不是接口。从类开始,如果接口的必需性变得非常明确,那么就进行重构。接口是一种重要的工具,但是容易被滥用。
- TIJ_工厂方法
- TIJ_字符串
- TIJ_策略设计模式
- TIJ_第十四章 类型信息
- TIJ_第十八章 I/O
- 工厂与工厂方法
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 抽象工厂 工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 简单工厂,工厂方法
- 工厂方法
- 工厂方法
- 工厂方法
- 工厂方法
- 工厂方法
- 工厂方法
- 第4章-类与对象-实验1用类描述坦克
- 交叉编译 android 版本的gdb
- Linux学习(CentOS-7)---X-Window与命令行模式的切换
- 不吉利的数字
- Altium Designer从已有的PCB图中导出封装库
- TIJ_工厂方法
- LINUX下安装 和 卸载 db2v10.5
- 分布式计算学习笔记之三:Web编程方式与 Java Web编程基础
- 安卓Handler,Looper消息传递机制
- 利用phpExcel进行数据导出
- Lightoj 1307 Counting Triangles
- Python快速复习之数据结构
- 猴子补丁
- Android开发工程师面试指南pdf版