java设计模式:简单工程模式

简单工厂模式:

概念:
  就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

代码:

interface Human{
    void sleep();
}

class Man implements Human{

    @Override
    public void sleep() {
        System.out.println("Man 睡觉!");
    }
}

class Woman implements Human{

    @Override
    public void sleep() {
        System.out.println("Woman 睡觉!");
    }
}

class Simple_factory{

    public static Human make(String sex){
        if("man".equals(sex)){
            return new Man();
        }
        else if("woman".equals(sex)){
            return new Woman();
        }else{
            System.out.println("No");
            return null;
        }

    }

}


class Simple_factory_1{
    public static Human make(Class c){
        Human human = null;
        try {
            // 通过反射实现实例化这个类,省去了去判断
            human = (Human)Class.forName(c.getName()).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return human;
    }
}

public class Factory {

    public static void main(String[] args) {
        // 普通实现
        Human human = new Simple_factory().make("man");
        human.sleep();
        Human human1 = new Simple_factory().make("woman");
        human1.sleep();
        System.out.println("------------------------------");
        // 反射实现
        Human human2 = new Simple_factory_1().make(Man.class);
        human2.sleep();
        Human human3 = new Simple_factory_1().make(Woman.class);
        human3.sleep();
    }
}

直接看代码最好,设计模式这种思想的多看代码去体会!
其中关于反射我会面专门写一个博客来专门做解释的!

猜你喜欢

转载自blog.csdn.net/yhflyl/article/details/80848785