工厂方法模式
来源:互联网 发布:sql server 主键自增 编辑:程序博客网 时间:2024/06/16 16:45
1、简单工厂模式
//工厂类
public class Factory {
public Product createProduct(String type){
if( type == "A"){
return new ProductA();
} else if( type == "B"){
return new ProductB();
}
return null;
}
}
////////////////////////////////////////////////////////////////////////
//产品接口
public interface Product {
public void func();
}
//产品类A
public class ProductA implements Product{
public void func(){
System. out.println( "ProductA");
}
}
//产品类B
public class ProductB implements Product{
public ProductB(){
}
public void func(){
System. out.println( "ProductB");
}
}
客户端
////////////////////////////////////////////////////////////
Factory f = new Factory();
Product pa = f.createProduct("A");
Pa.func();
Product pb = f.createProduct("B");
Pa.func();
2、工厂方法模式
//工厂类接口
public interface Factory {
public Product createProduct ();
}
//工厂类A
public class FactoryA implements Factory{
public Product createProduct(){
return new ProductA();
}
}
//工厂类B
public class FactoryB implements Factory{
public Product createProduct(){
return new ProductB();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//产品基类
public class Product {
public void func(){
System. out.println( "product");
}
}
//产品类A
public class ProductA extends Product{
public void func(){
System. out.println( "ProductA");
}
}
//产品类B
public class ProductB extends Product{
public void func(){
System. out.println( "ProductB");
}
}
/////////////////////////////////////////////////////////////////
//客户端
public class main {
public static void main(String[] args){
Factory Fa = new FactoryA();
Product Pa = Fa.createProduct();
Pa.func();
Factory Fb = new FactoryB();
Product Pb = Fb.createProduct();
Pb.func();
}
}
3、抽象工厂方法模式
产品A
////////////////////////////////////////////////////////////
//鼠标接口
public interface IMouse {
public void func();
}
//mac鼠标
public class MacMouse implements IMouse{
public void func(){
System. out.println( "MacMouse");
}
}
//lenovo鼠标
public class LenovoMouse implements IMouse{
public void func(){
System. out.println( "lenovoMouse");
}
}
产品B
/////////////////////////////////////////////////////////////////
//键盘接口
public interface IKeyboard {
public void func();
}
//mac键盘
public class MacKeyboard implements IKeyboard{
public void func(){
System. out.println( "MacKeyboard");
}
}
//lenovo键盘
public class LenovoKeyboard implements IKeyboard{
public void func(){
System. out.println( "LenovoKeyboard");
}
}
工厂类
////////////////////////////////////////////////////////
//工厂接口
public interface IFactory {
public IKeyboard CreateKeyboard ();
public IMouse CreateMouse();
}
//Mac工厂
public class MacFactory implements IFactory{
public IKeyboard CreateKeyboard(){
return new MacKeyboard();
}
public IMouse CreateMouse(){
return new MacMouse();
}
}
//Lenovo工厂
public class LenovoFactory implements IFactory{
public IKeyboard CreateKeyboard(){
return new LenovoKeyboard();
}
public IMouse CreateMouse (){
return new LenovoMouse();
}
}
客户端
////////////////////////////////////////////////////////////
public class main {
public static void main(String[] args ){
IFactory factory = new MacFactory();
IMouse mouse = factory .CreateMouse();
mouse.func();
IKeyboard keyboard = factory .CreateKeyboard();
keyboard.func();
factory = new LenovoFactory();
mouse = factory .CreateMouse();
mouse.func();
keyboard = factory .CreateKeyboard();
keyboard.func();
}
}
输出
/////////////////////////////////////////////////////////////
MacMouse
MacKeyboard
lenovoMouse
LenovoKeyboard
1 0
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- VS2008中加入库文件、引用文件和包含文件的路径
- oc中的 getter 和setter方法 浅析示例
- hwc_composer_device_1
- 王家林大数据视频
- NSMutableString 和 NSMutableArray常用方法
- 工厂方法模式
- Size Classes
- Trinea性能优化系列之数据库优化
- 自动白平衡(AWB)算法---2,色温计算
- iOS 如何获取系统的个人热点,进行配置UI
- IOS8 指纹解锁 Touch ID
- 匈牙利算法的C++实现
- spring 国际化
- MapReduce