大话设计模式总结

实习时给公司写代码,完全从零开始写,一开始写的很爽,因为可以随心所欲,不用先看别人的代码,完全按照自己的想法来实现。

写到后来发现当有需求变化时,不得不更改一些代码,结果由于一开始没有考虑的周全,结果在需求发生变化,没有一个好的设计模式,改的我心力憔悴。

虽然自己也明白写代码遵循抽象,重构的一些东西,但是毕竟没有受过良好训练,对设计模式的规范化没有清晰的认识。

于是最近一段时间读了下《大话设计模式》,受益匪浅,有些常用的设计模式还是很有必要记下来的。


1.单例(Singleton)模式:

这应该是最简单的一个模式了。

单例模式旨在确保某个类只有一个实例,并且为之提供一个全局访问点。

就是这个类自始至终只能有一个实例,并且这个实例可以作为全局变量。

简单的实现方法:

public class Singleton
{
	//静态实例属性
	private static Singleton instance = new Singleton();
<span style="white-space:pre">	</span>//构造方法设为私有的
	private Singleton(){};
<span style="white-space:pre">	</span>//设置一个静态方法来获得这个类的唯一实例
	public static Singleton getInstance()
	{
		return instance;
	}
	
}

2.工厂(Factory)模式:将类的实例化方法一个工厂类里去实现。

工厂模式主要是代替new 关键字来实例化我们的类,但是如果我们只是实例化一个类,我们完全不必使用工厂模式。但是如果我们需要在实例化类的同时做一下别的工作,如果把这些代码写在类的构造方法里,这样不仅看起来很丑,后期维护也会很费事。

如果我们把这些工作用一个工厂来干,这样后来再改需求的时候就能避免不必要的麻烦。

简单的实现方法:

 

public interface people{
      public void say();
}
 
 
public class chinese implements people{
      public void say(){
           System.out.println("说中国话");
     }
}
 
 
public class american implements people{
      public void say(){
           System.out.println("speak english");
     }
}
 
public class peopleFactory{
      public static people create(int type){
           if(type==1){
                  return new chinese();
           }else if(type==2){
                 return new american();
           }
     }
 }
//代码来源网络

3.代理模式

代理是基本的设计模式之一,它是你为了提供额外的或不同的操作,而插入的用来代替“实际”的对象的对象。这些操作通常涉及与“实际”对象的通信,因此代理模式通常充当中间人的角色。

class SimpleProxyDemo
{
	public static void consumer(Interface iface)
	{
		iface.doSometing();
		iface.somethinfElse("hehehe");
	}
	
	public static void main(String[] args)
	{
		consumer(new RealObject());
		consumer(new SimpleProxy(new RealObject()));
	}
}

interface Interface
{
	void doSometing();
	void somethinfElse(String arg);
}

class RealObject implements Interface{
	public void doSometing()
	{
		System.out.println("doSometing");
	}
	public void somethinfElse(String arg)
	{
		System.out.println("somethinfElse " + arg);
	}
}

class SimpleProxy implements Interface
{
	private Interface proxied;
	public SimpleProxy(Interface proxied)
	{
		this.proxied = proxied;
	}
	
	public void doSometing()
	{
		System.out.println("SimpleProxy doSometing");
		proxied.doSometing();
	}
	
	public void somethinfElse(String arg)
	{
		System.out.println("SimpleProxy somethinfElse " + arg);
		proxied.somethinfElse(arg);
	}
}
从代码看出

SimpleProxy 充当了代理角色,我们执行SimpleProxy 的方法,实际上会被转移到RealObject的身上。此时,我们若想提供额外的操作,我们不用对RealObject进行修改,而是使用更改SimpleProxy 这个代理角色的代码就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计模式是一种解决软件设计问题的经验总结,它提供了一套可重用的设计思想和解决方案。在Python中,我们也可以应用设计模式来提高代码的可维护性、可扩展性和可复用性。下面是一些常见的设计模式在Python中的实现: 1. 单例模式Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。 ```python class Singleton: _instance = None def __new__(cls): if not cls._instance: cls._instance = super().__new__(cls) return cls._instance ``` 2. 工厂模式(Factory Pattern):通过一个工厂类来创建对象,而不是直接实例化对象。 ```python class Product: def __init__(self, name): self.name = name class ProductFactory: @staticmethod def create_product(name): return Product(name) ``` 3. 观察者模式(Observer Pattern):定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象。 ```python class Subject: def __init__(self): self.observers = [] def attach(self, observer): self.observers.append(observer) def detach(self, observer): self.observers.remove(observer) def notify(self): for observer in self.observers: observer.update() class Observer: def update(self): print("Received update from subject.") ``` 以上是三个常见的设计模式在Python中的简单示例,实际应用中可能会更加复杂。当然,根据具体的需求和场景,选择合适的设计模式是很重要的。希望这些示例对你有所帮助!如果你对其他设计模式感兴趣,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值