好记性不如铅笔头

java, 编程, 设计模式

设计模式学习笔记:工厂模式

工厂模式

github:

【 https://github.com/cstriker1407/design_pattern 】

CONTENTS

简单工厂模式

1)定义统一的接口,用来让各个元素实现。

interface onSender
{
        public void Sender();
}

2)定义各个元素。

class MailSender implements onSender
{
        @Override
        public void Sender()
        {
                System.out.println("Mail Sender");
        }
}

class SMSSender implements onSender
{
        @Override
        public void Sender()
        {
                System.out.println("SMS Sender");
        }
}

3)定义简单的工厂来实现元素的创造。

public class Simplefactory1
{
        public static onSender createOnSender(String type)
        {
                if ("Mail".equals(type))
                {
                        return new MailSender();
                }
                if ("SMS".equals(type))
                {
                        return new SMSSender();
                }
                return null;
        }
        
        public static onSender createMail()
        {
                return new MailSender();
        }
        
        public static onSender createSMS()
        {
                return new SMSSender();
        }
}

抽象工厂模式

个人感觉抽象工厂模式很像跨平台的应用。

1)定义各个平台的接口。

interface OperateFun
{
        public void draw();
        public void write();
}

 2)在各个平台上实现它们。

class Win implements OperateFun
{
        @Override
        public void draw()
        {
                System.out.println("win draw");
        }
        @Override
        public void write()
        {
                System.out.println("linux draw");
        }
}

class Linux implements OperateFun
{
        @Override
        public void draw()
        {
                System.out.println("linux draw");
        }

        @Override
        public void write()
        {
                System.out.println("linux write");
        }
}

 3)定义上层的操作接口,屏蔽掉调用者和下层的联系。

interface Provider
{
        public OperateFun produce();
}

class WinProvider implements Provider
{
        @Override
        public OperateFun produce()
        {
                return new Win();
        }
}
class LinuxProvider implements Provider
{
        @Override
        public OperateFun produce()
        {
                return new Linux();
        }
}

 4)上层的对操作接口的调用。

public class AbstractFactory1
{
        public static void test()
        {
                Provider provider = new WinProvider();
                provider.produce().draw();
                
                provider = new LinuxProvider();
                provider.produce().draw();
        }
}

备注:

1) 工厂模式的定义没有说明,后续可能补上。

发表评论

7 + 17 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据