23种设计模式

一、设计模式的分类

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

1、 工厂方法模式(Factory Method)

[java]1. public interface Sender {

2.

3. public void Send(); } 其次,创建实现类:

[java]public class MailSender implements Sender {

@Override

public void Send() {

System.out.println("this is mailsender!");

}

}

[java]public class SmsSender implements Sender {

@Override

public void Send() {

System.out.println("this is sms sender!");

}

}

最后,建工厂类:

[java]1.

2.

3.

4.

5.

6.

7.

8.

9.

10. public class SendFactory { public Sender produce(String type) { if ("mail".equals(type)) { return new MailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("请输入正确的类型!"); return null; 1. 2. 3. 4. 5. 6. 1. 2. 3. 4. 5. 6. 7.

11.

12.

13. } } }

我们来测试下:

23种设计模式

1.

2.

3.

4.

5.

6.

7. 8.

9. public class FactoryTest { public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produce("sms"); sender.Send(); } }

2、 抽象工厂模式(Abstract Factory)

请看例子:

[java]1. public interface Sender {

2.

3. public void Send(); }

两个实现类:

[java]public class MailSender implements Sender { @Override

public void Send() {

System.out.println("this is mailsender!"); } 1. 2. 3. 4. 5.

6.

1.

2.

3.

4.

5.

6.

7. } [java]public class SmsSender implements Sender { @Override public void Send() { System.out.println("this is sms sender!"); } } 两个工厂类:

[java]public class SendMailFactory implements Provider {

@Override public Sender produce(){

return new MailSender();

}

}

[java]public class SendSmsFactory implements Provider{

@Override

public Sender produce() {

return new SmsSender();

}

}

在提供一个接口: 1. 2. 3. 4. 5. 6. 7. 1. 2. 3. 4. 5. 6. 7.

[java]1. public interface Provider {

2. public Sender produce();

3. }

测试类:

[java]public class Test {

public static void main(String[] args) {

Provider provider = new SendMailFactory(); Sender sender = provider.produce(); sender.Send();

}

} 1. 2. 3. 4. 5. 6. 7. 8.

3、单例模式(Singleton)

单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:

1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。

2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。

3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

首先我们写一个简单的单例类:

[java]1. public class Singleton {

2.

3. /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */ 4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20. private static Singleton instance = null; /* 私有构造方法,防止被实例化 */ private Singleton() { } /* 静态工程方法,创建实例 */ public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } /* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */ public Object readResolve() { return instance;

21. }

22. }

5、原型模式(Prototype)

原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:

[java]public class Prototype implements Cloneable {

public Object clone() throws CloneNotSupportedException {

Prototype proto = (Prototype) super.clone(); 1. 2. 3. 4.

5.

6.

7. return proto; } } 很简单,一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB,因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法,而在Object类中,clone()是native的,具体怎么实现,我会在另一篇文章中,关于解读Java中本地方法的调用,此处不再深究。在这儿,我将结合对象的浅复制和深复制来说一下,首先需要了解对象深、浅复制的概念:

浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。

深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。

此处,写一个深浅复制的例子:

[java]public class Prototype implements Cloneable, Serializable {

private static final long serialVersionUID = 1L;

private String string;

private SerializableObject obj;

/* 浅复制 */

public Object clone() throws CloneNotSupportedException {

Prototype proto = (Prototype) super.clone();

return proto;

}

/* 深复制 */ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

15. public Object deepClone() throws IOException, ClassNotFoundExcep

tion {

16.

17. /* 写入当前对象的二进制流 */

18.

19.

20.

21.

22. ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(this); /* 读出二进制流产生的新对象 */

23. ByteArrayInputStream bis = new ByteArrayInputStream(bos.toBy

teArray());

24. ObjectInputStream ois = new ObjectInputStream(bis);

25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.

return ois.readObject(); } public String getString() { return string; } public void setString(String string) { this.string = string; } public SerializableObject getObj() { return obj; } public void setObj(SerializableObject obj) { this.obj = obj; } } class SerializableObject implements Serializable { private static final long serialVersionUID = 1L; }

 

第二篇:昆明创新人口计生宣传教育模式总结材料

昆明创新人口计生宣传教育模式总结材料

近年来,云南昆明市在人口计生宣传教育中坚持以人为本,创新方式方法,重视发挥网络信息技术在大众传播中的积极作用,实现宣传教育“E站式”服务,倡导社会关心支持计划生育,为推动统筹解决人口问题积极营造良好的舆论环境。

健全制度 完善网络宣传规范

一是建立网络信息发布审查制度。规定上网信息由县、市人口计生部门分级审查把关,明确责任,坚持客观、正面、准确地宣传报道我市人口计生工作,保守国家秘密和工作秘密。二是建立年度优秀信息评比表彰制度。每年召开网络宣传工作会议,总结、部署信息宣传工作,对优秀信息进行评比表彰,充分调动人口计生干部采写、报送人口计生信息的积极性。三是落实重要事项公示、重点工作网络通报制度。除通过网站发布常规信息外,定期向社会公开人口计生重要事项、重点工作、项目进度、专项经费收支等情况,充分保障公众的知情权和监督权。四是落实政务信息查询制度。将公众普遍关注和反映较多的问题进行收集整理,作出统一规范的解答,输入全省96128政务信息网络查询系统,方便公众“24小时”查询,并在工作时间内在线回复访问人的有关咨询。

创建载体 体现多渠道服务

一是在全省率先建成人口计生门户网“昆明人口之家”,架设机关内部局域网。门户网开设30多个一级栏目,综合运用文字、图片、

动漫、音频等多种网络元素和手段,全面展示和宣传我市人口计生工作,提供计划生育、优生优育、生殖健康等方面的信息服务,网站开通3年来点击率已超过40万人次。内部局域网连通各业务处室,实现了宣传教育文件的无纸化传输和各类宣传资料的在线存储、查阅。二是在云南省政府信息公开网站、昆明信息港网站开通市人口计生委子站,公开政府信息,打造政府部门网站群中的人口计生宣传新“窗口”,并与国内省内人口计生网媒友情链接,扩大网络宣传的影响力。三是利用党员干部现代远程教育网和人口计生远程教育网,对党政领导、人口计生干部和目标人群进行教育培训,广泛开展人口理论、计生政策、法律法规、优生优育、避孕节育、生殖健康等知识的宣传。四是开设人口计生博客、在线咨询BBS和信访QQ群等网络平台,发挥网络传播迅速、便捷、广覆盖的优势,通过与访客交流互动,答疑解惑,为目标人群提供生产、生活、生育方面的信息指导和服务。

策划形式 增强宣传效果

一是开展“网上访谈”。市人口计生委领导做客昆明信息港“昆明会客厅”,通过网上视频直播,分析人口形势,解读人口计生政策、法律法规和热点问题,并通过发表网络署名文章等形式,宣传党委、政府推动解决人口问题的重大举措,引导群众了解、关注和支持人口计生事业。二是开展“情境服务”。网站对服务对象和事项进行了细分归类,设计出界面友好的模拟服务厅,公众只要按照提示选择身份特征,就能获取“量身定做”的婚育指南和诉求解决方案,实现网络服务人性化。三是制作主题宣传。围绕重大节日、纪念日和宣传日主

题,制作专题专栏,采取制作主题图、背景介绍、资料链接、图片专辑等多种形式,展开丰富全面的网上宣传,产生了宣传的聚合效应。近年来市人口计生委先后策划制作的网站主题报道,有近百篇文图被中国人口网、云南网、腾讯网、新浪网等重要网络和知名网媒转载。四是开展典型宣传。网站开设人物风采栏目,推出一大批先进典型人物事迹宣传,其中有重视支持人口计生工作的高层领导,有忘我奉献的国策执行者,也有模范带头实行计划生育的群众代表。报道采取故事集萃、照片组合等多种形式,生动讲述典型人物的感人事迹,展现典型人物的时代风采,引导和激励广大干部群众坚持和落实计划生育国策。

相关推荐