zoukankan      html  css  js  c++  java
  • java 简单工厂&抽象工厂

    工厂模式:就是提供一个实例化对象的接口,让子类去决定实现哪个具体对象

    1:简单工厂

    public abstract class Person {

    }
    public class XiaoLi extends Person {
    public void eat() {
    System.out.println("小李吃饭");
    }
    }
    public class XiaoMing extends Person {
    public void eat() {
    System.out.println("小明吃饭");
    }
    }
    /**
    * 简单工厂
    */
    public class SimpleFactory {
    public Person instance(String username) {
    if (username.equals("1")) {
    return new XiaoMing();
    } else if (username.equals("2")) {
    return new XiaoLi();
    }
    return null;
    }
    }
    public class SimpleTest {
    public static void main(String[] args) {
    SimpleFactory factory = new SimpleFactory();
    Person xiaoming = factory.instance("1");
    Person xiaoli = factory.instance("2");
    XiaoLi m = (XiaoLi) xiaoli;
    m.eat();
    XiaoMing l = (XiaoMing) xiaoming;
    l.eat();

    }
    }
    --------------------------------------------------------------------------------------------------------
    2:抽象工厂
    public abstract class Product {
    }
    public class MobilePhone extends Product {
    public void desc() {
    System.out.println("this is mobilephone");
    }
    }
    public class Pen extends Product {
    public void desc(){
    System.out.println("this is pen");
    }
    }
    /**
    * 抽象工厂-每个类别创建自己的工厂
    */
    public abstract class Afactory {
    public abstract Product instance();
    }
    public class MobilePhoneFactory extends  Afactory {
    @Override
    public Product instance() {
    return new MobilePhone();
    }
    }
    public class PenFactory extends Afactory {
    @Override
    public Product instance() {
    return new Pen();
    }
    }
    /**
    * 抽象工厂模式测试
    * 工厂模式:提供一个实例化对象的接口,让子类去决定实例那个具体对象
    */
    public class TestAbs {
    public static void main(String[] args) {
    Afactory penFactory = new PenFactory();
    Pen pen = (Pen) penFactory.instance();
    pen.desc();
    Afactory mobileFactory = new MobilePhoneFactory();
    MobilePhone mobilePhone = (MobilePhone) mobileFactory.instance();
    mobilePhone.desc();
    }
    }
  • 相关阅读:
    C#多线程学习(五) 多线程的自动管理(定时器)
    一个Web开发的客户端基础技术测试Demo
    Ext简介(转)
    CSDN网友挑选的2007年最有价值文章
    C#+flash socket 聊天程序(转)
    一个索引查找的ASP.NET示例探讨
    程序员应该如何使用大脑?
    C#多线程学习(二) 如何操纵一个线程
    一个C#的加锁解锁示例
    ASP.NET如何存取SQL Server数据库图片(转)
  • 原文地址:https://www.cnblogs.com/coderdxj/p/9635023.html
Copyright © 2011-2022 走看看