当前位置:首页 > 设计模式 > 正文内容

抽象工厂模式

canca19年前 (2007-03-26)设计模式417

//抽象工厂模式
//Copyright CAnca Software office
//Created by CAnca.2006

public class AbstractFactory{
 public static void main(String[] args){
  AbstractFactory factory1 = new concreteFactory1();
  Client client1 = new Client(factory1);
  client1.getNames();
  
  AbstractFactory factory2 = new concreteFactory2();
  Client client2 = new Client(factory2);
  client2.getNames();
 }
}

abstract class AbstractFactory{
 public abstract AbstractProductA createProductA();
 public abstract AbstractProductB createProductB();
}

class concreteFactory1 extends AbstractFactory{
 public AbstractProductA createProductA(){
  return new productA1();
 }
 
 public AbstractProductB createProductB(){
  return new productB1();
 }
}

class concreteFactory2 extends AbstractFactory{
 public AbstractProductA createProductA(){
  return new productA2();
 }
 
 public AbstractProductB createProductB(){
  return new productB2();
 }
}

abstract class AbstractProductA{
 
}

abstract class AbstractProductB{
 public abstract void getName(AbstractProductA a);
}

class productA1 extends AbstractProductA{
 
}

class productB1 extends AbstractProductB{
 public void getName(AbstractProductA a){
  System.out.println(this.getClass().getName() + " interacts with " + a.getClass().getName());
 }
}

class productA2 extends AbstractProductA{
 
}

class productB2 extends AbstractProductB{
 public void getName(AbstractProductA a){
  System.out.println(this.getClass().getName() + " interacts with " + a.getClass().getName());
 }
}

class Client{
 private AbstractProductA abstractProductA;
 private AbstractProductB abstractProductB;
 public Client(AbstractFactory factory){
  this.abstractProductA = factory.createProductA();
  this.abstractProductB = factory.createProductB();
 }
 
 public void getNames(){
  abstractProductB.getName(abstractProductA);
 }
}

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/669.html

标签: 设计模式
分享给朋友:
返回列表

没有更早的文章了...

下一篇:单例模式

“抽象工厂模式” 的相关文章

单例模式

//CopyRight CAnca Software Office. 2006//Created by CAnca. import java.util.*; public class singletonMode{ public static void main(String[] args)...

建造者模式

//建造者模式//CopyRight(C)CAnca Software Office.//Created by CAnca. import java.util.*; public class BuilderMode{ public static void main(String[] arg...

原型模式

//原型模式//CopyRight(C) CAnca Software Office.2006//Created by CAnca. public class PrototypeMode{ public static void main(String[] args){  ...

适配器模式

//适配器模式//CopyRight(C)CAnca Software Office.//Created by CAnca. public class AdapterMode{ public static void main(String[] args){  Adapt...

享元模式

//享元模式//CopyRight(C) CAnca software Office.2006//Created by CAnca. import java.util.*; public class ShareMode{ public static void main(String[] a...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。